From fdd20042c1c98f1f740d01d83002f787688c413b Mon Sep 17 00:00:00 2001 From: Hafiyyan Date: Mon, 30 Sep 2019 14:36:11 +0700 Subject: [PATCH 001/140] Login sso fix --- core/tests/test_accounts.py | 7 ++++-- core/tests/test_vacancies.py | 12 ++++++--- core/views/accounts.py | 19 ++++++-------- core/views/sso_login.py | 48 ++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 core/views/sso_login.py diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index 35458de..25281a7 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -8,6 +8,7 @@ from core.models.accounts import Company, Supervisor, Student class LoginTests(APITestCase): @requests_mock.Mocker() def test_succesful_student_login_relogin(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -16,7 +17,7 @@ class LoginTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ @@ -35,6 +36,7 @@ class LoginTests(APITestCase): @requests_mock.Mocker() def test_successful_supervisor_login_relogin(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.dosen", "nama": "Dummy Dosen", @@ -106,6 +108,7 @@ class ProfileUpdateTests(APITestCase): @requests_mock.Mocker() def test_student_profile_update(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -114,7 +117,7 @@ class ProfileUpdateTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 78cdc5a..1667ac1 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -12,6 +12,7 @@ from core.models.vacancies import Vacancy, Application class ApplicationTests(APITestCase): @requests_mock.Mocker() def test_application_list(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -20,7 +21,7 @@ class ApplicationTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ @@ -42,6 +43,7 @@ class ApplicationTests(APITestCase): @requests_mock.Mocker() def test_application_create_and_delete(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -50,7 +52,7 @@ class ApplicationTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ @@ -84,6 +86,7 @@ class ApplicationTests(APITestCase): class BookmarkApplicationTests(APITestCase): @requests_mock.Mocker() def test_application_list(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -92,7 +95,7 @@ class BookmarkApplicationTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ @@ -114,6 +117,7 @@ class BookmarkApplicationTests(APITestCase): @requests_mock.Mocker() def test_application_create_and_delete(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ "username": "dummy.mahasiswa", "nama": "Dummy Mahasiswa", @@ -122,7 +126,7 @@ class BookmarkApplicationTests(APITestCase): "kodeidentitas": "1234567890", "nama_role": "mahasiswa" }, status_code=200) - m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890/', json={ + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ "kota_lahir": "kota_kota", "tgl_lahir": "2017-12-31", "program": [{ diff --git a/core/views/accounts.py b/core/views/accounts.py index 0b74350..9ea10d8 100644 --- a/core/views/accounts.py +++ b/core/views/accounts.py @@ -9,6 +9,7 @@ from rest_framework.parsers import FormParser,MultiPartParser from rest_framework.permissions import AllowAny from rest_framework.permissions import IsAdminUser, IsAuthenticated from rest_framework.response import Response +from .sso_login import get_access_token, verify_user, get_riwayat_user, get_summary_user from core.lib.permissions import IsAdminOrStudent, IsAdminOrSelfOrReadOnly, IsAdminOrCompany, IsAdminOrSupervisor, \ IsAdminOrSupervisorOrCompanyOrSelf @@ -81,14 +82,9 @@ class StudentViewSet(viewsets.ModelViewSet): raise PermissionDenied("You are not allowed to see other student's transcript") if student.show_transcript: - s = requests.Session() - credentials = settings.API_CS_CREDENTIALS - s.get('https://api.cs.ui.ac.id/api-auth/login/') - csrf = s.cookies['csrftoken'] - resp = s.post('https://api.cs.ui.ac.id/api-auth/login/', - data={'username': credentials["user"], 'password': credentials["password"], - 'csrfmiddlewaretoken': csrf}) - response = s.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/' + str(student.npm) + '/riwayat/') + access_token = get_access_token(credentials["user"], credentials["password"]) + ver_user = verify_user(access_token) + response = get_riwayat_user(access_token, ver_user['identity_number']) return Response({'name': student.full_name, 'transcript': response.json()}, status=status.HTTP_200_OK) else: return Response({'name': student.full_name, 'error': 'student does not allow transcript to be shown'}, @@ -146,7 +142,7 @@ class LoginViewSet(viewsets.GenericViewSet): return Response(status=status.HTTP_400_BAD_REQUEST) if login_type == "sso-ui": r = requests.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', - json={"username": username, "password": password}) + data={"username": username, "password": password}) resp = r.json() if resp.get('state') != 0: # create user @@ -167,8 +163,9 @@ class LoginViewSet(viewsets.GenericViewSet): login(request, user) if created: if resp.get('nama_role') == "mahasiswa": - student_detail = requests.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/{}/'.format(resp.get("kodeidentitas"))) - resp_student_detail = student_detail.json() + access_token = get_access_token(username, password) + ver_user = verify_user(access_token) + resp_student_detail = get_summary_user(access_token, ver_user['identity_number']) student = Student.objects.create( user=user, npm=resp.get("kodeidentitas"), diff --git a/core/views/sso_login.py b/core/views/sso_login.py new file mode 100644 index 0000000..669bf2b --- /dev/null +++ b/core/views/sso_login.py @@ -0,0 +1,48 @@ +import requests + +API_MAHASISWA = "https://api.cs.ui.ac.id/siakngcs/mahasiswa/" +API_RIWAYAT_MAHASISWA = API_MAHASISWA+'{npm}/riwayat/' +API_VERIFY_USER = "https://akun.cs.ui.ac.id/oauth/token/verify/" +def get_access_token(username, password): + try: + url = "https://akun.cs.ui.ac.id/oauth/token/" + + payload = "username=" + username + "&password=" + password + "&grant_type=password" + headers = { + 'authorization': "Basic WDN6TmtGbWVwa2RBNDdBU05NRFpSWDNaOWdxU1UxTHd5d3U1V2VwRzpCRVFXQW43RDl6a2k3NEZ0bkNpWVhIRk50Ymg3eXlNWmFuNnlvMU1uaUdSVWNGWnhkQnBobUU5TUxuVHZiTTEzM1dsUnBwTHJoTXBkYktqTjBxcU9OaHlTNGl2Z0doczB0OVhlQ3M0Ym1JeUJLMldwbnZYTXE4VU5yTEFEMDNZeA==", + 'cache-control': "no-cache", + 'content-type': "application/x-www-form-urlencoded" + } + response = requests.request("POST", url, data=payload, headers=headers) + + return response.json()["access_token"] + except Exception as e: + return None + # raise Exception("username atau password sso salah, input : [{}, {}]".format(username, password,)) + +def get_client_id(): + client_id = 'X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG' + return client_id + +def verify_user(access_token): + print ("#get identity number") + parameters = {"access_token": access_token, "client_id": get_client_id()} + response = requests.get(API_VERIFY_USER, params=parameters) + print ("response => ", response.json()) + return response.json() + +def get_summary_user(access_token, npm): + print ("#get summary user => ", npm) + parameters = {"access_token": access_token, "client_id": get_client_id()} + response = requests.get(API_MAHASISWA+str(npm), params=parameters) + print ("response => ", response.text) + print ("response => ", response.json()) + return response.json() + +def get_riwayat_user(access_token, npm): + print ("#get riwayat user => ", npm) + parameters = {"access_token": access_token, "client_id": get_client_id()} + response = requests.get(API_RIWAYAT_MAHASISWA.format(npm=npm), params=parameters) + print ("response => ", response.text) + print ("response => ", response.json()) + return response.json() -- GitLab From 03a94f57eeccdec20e2660144afe11e5eca9bc40 Mon Sep 17 00:00:00 2001 From: Ivana Irene Thomas Date: Wed, 2 Oct 2019 11:02:37 +0700 Subject: [PATCH 002/140] add test application request will return 400 if vacancy is closed --- core/tests/test_vacancies.py | 37 +++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 1667ac1..b45d3fa 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timedelta import requests_mock from django.contrib.auth.models import User @@ -81,7 +81,42 @@ class ApplicationTests(APITestCase): url = '/api/students/' + str(student_id) + '/applied-vacancies/' + str(new_vacancy.pk) + '/' response = self.client.delete(url) self.assertEqual(response.status_code, status.HTTP_200_OK) + + @requests_mock.Mocker() + def test_cannot_create_application_if_vacancy_is_closed(self, m): + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) + m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ + "username": "dummy.mahasiswa", + "nama": "Dummy Mahasiswa", + "state": 1, + "kode_org": "01.00.12.01:mahasiswa", + "kodeidentitas": "1234567890", + "nama_role": "mahasiswa" + }, status_code=200) + m.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={ + "kota_lahir": "kota_kota", + "tgl_lahir": "2017-12-31", + "program": [{ + "nm_org": "Ilmu Informasi", + "angkatan": "2017" + }] + }, status_code=200) + + url = '/api/login/' + + response = self.client.post(url, {'username': 'dummy.mahasiswa', 'password': 'lalala', 'login-type': 'sso-ui'}, + format='json') + student_id = response.data.get('student').get('id') + new_user = User.objects.create_user('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today() - timedelta(days=1)) + url = '/api/students/' + str(student_id) + '/applied-vacancies/' + response = self.client.post(url, {'vacancy_id': new_vacancy.pk, 'cover_letter': 'this is a cover letter.'}, + format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) class BookmarkApplicationTests(APITestCase): @requests_mock.Mocker() -- GitLab From 46845b6c570610f775ec890b35701b580d826b5c Mon Sep 17 00:00:00 2001 From: Ivana Irene Thomas Date: Wed, 2 Oct 2019 11:48:33 +0700 Subject: [PATCH 003/140] modify commit, return 400 when vacancy close_time less than today --- core/tests/test_vacancies.py | 8 ++++---- core/views/vacancies.py | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index b45d3fa..bada03a 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -1,5 +1,5 @@ from datetime import datetime, timedelta - +from django.utils import timezone import requests_mock from django.contrib.auth.models import User from rest_framework import status @@ -71,7 +71,7 @@ class ApplicationTests(APITestCase): new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, address=None) new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + description="lalala", close_time=(timezone.now() + timedelta(days=1))) url = '/api/students/' + str(student_id) + '/applied-vacancies/' response = self.client.post(url, {'vacancy_id': new_vacancy.pk, 'cover_letter': 'this is a cover letter.'}, @@ -81,7 +81,7 @@ class ApplicationTests(APITestCase): url = '/api/students/' + str(student_id) + '/applied-vacancies/' + str(new_vacancy.pk) + '/' response = self.client.delete(url) self.assertEqual(response.status_code, status.HTTP_200_OK) - + @requests_mock.Mocker() def test_cannot_create_application_if_vacancy_is_closed(self, m): m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, status_code=200) @@ -112,7 +112,7 @@ class ApplicationTests(APITestCase): new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, address=None) new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today() - timedelta(days=1)) + description="lalala", close_time=(timezone.now() - timedelta(days=1))) url = '/api/students/' + str(student_id) + '/applied-vacancies/' response = self.client.post(url, {'vacancy_id': new_vacancy.pk, 'cover_letter': 'this is a cover letter.'}, format='json') diff --git a/core/views/vacancies.py b/core/views/vacancies.py index e4b8b98..7ce8c39 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -1,4 +1,5 @@ import requests +from django.utils import timezone from django.conf import settings from rest_framework import viewsets, status from rest_framework.decorators import detail_route @@ -137,6 +138,9 @@ class StudentApplicationViewSet(viewsets.GenericViewSet): """ cover_letter = request.data.get('cover_letter') vacancy = get_object_or_404(Vacancy.objects.all(), pk=request.data.get('vacancy_id')) + if vacancy.close_time < timezone.now(): + return Response({"error": "vacancy is closed"}, \ + status=status.HTTP_400_BAD_REQUEST) student = get_object_or_404(Student.objects.all(), pk=student_id) if Application.objects.filter(vacancy=vacancy, student=student).exists(): raise ValidationError("You have already applied for the vacancy") -- GitLab From 0955dd709fb9bfbfddd56cbdc08ddf7ec5f9d548 Mon Sep 17 00:00:00 2001 From: Ivana Irene Thomas Date: Wed, 2 Oct 2019 11:57:28 +0700 Subject: [PATCH 004/140] disable Daftar button if application is overdue --- assets/js/components/ApplyModal.jsx | 4 +++- assets/js/components/Vacancy.jsx | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/assets/js/components/ApplyModal.jsx b/assets/js/components/ApplyModal.jsx index fbd6d62..acb63cc 100644 --- a/assets/js/components/ApplyModal.jsx +++ b/assets/js/components/ApplyModal.jsx @@ -1,4 +1,5 @@ import React from 'react'; +import moment from 'moment'; import { Icon, Modal, Button, TextArea, Form, Message } from 'semantic-ui-react'; import ModalAlert from './../components/ModalAlert'; import Server from './../lib/Server'; @@ -65,6 +66,7 @@ export default class ApplyModal extends React.Component { }; render() { + const isApplicationClosed = moment(this.props.data.close_time) < moment.now() return ( {this.props.buttonTitle}} @@ -104,7 +106,7 @@ export default class ApplyModal extends React.Component { )} - diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index a755cca..51e3921 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -89,6 +89,7 @@ export default class Vacancy extends React.Component { header: this.props.data.name, description: this.props.data.description, id: this.props.data.id, + close_time: this.props.data.close_time }} resume={this.props.user.data.student.resume} buttonTitle="Detail" -- GitLab From 8b61b8c051204c4d83afe0c1847fbdd9c221a97d Mon Sep 17 00:00:00 2001 From: Daya Adianto Date: Thu, 3 Oct 2019 18:41:22 +0700 Subject: [PATCH 005/140] Fix SonarScanner CI job and add project badges --- .gitlab/CODEOWNERS | 4 ++++ README.md | 7 +++++++ sonar-project.properties | 1 + 3 files changed, 12 insertions(+) create mode 100644 .gitlab/CODEOWNERS diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS new file mode 100644 index 0000000..a690232 --- /dev/null +++ b/.gitlab/CODEOWNERS @@ -0,0 +1,4 @@ +# Code owners file + +## Changes to these file(s) require approval from the teaching team +sonar-project.properties @addianto @hafiyyan94 \ No newline at end of file diff --git a/README.md b/README.md index 3020546..3734ba0 100755 --- a/README.md +++ b/README.md @@ -2,6 +2,13 @@ > Internship matchmaking platform for students and companies. +[![pipeline status](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/badges/master/pipeline.svg)](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/commits/master) +[![coverage report](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/badges/master/coverage.svg)](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/commits/master) + +[![Quality Gate Status](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=alert_status)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) +[![Bugs](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=bugs)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) +[![Code Smells](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=code_smells)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) + ## Table of Contents - [Install](#install) diff --git a/sonar-project.properties b/sonar-project.properties index 48a6c49..c3db74c 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -7,6 +7,7 @@ sonar.projectKey=id.ac.ui.cs.foss:kape sonar.exclusions=/.devcontainer/,/.gitlab/,*.config.js,/.tmp/, sonar.scm.provider=git +sonar.projectVersion=1.0.0 ## Authentication ### sonar.login=[pass token via CLI/CI] -- GitLab From e891c101292e563332db1aee9e7d3c3ea60216b6 Mon Sep 17 00:00:00 2001 From: Daya Adianto Date: Thu, 3 Oct 2019 18:41:22 +0700 Subject: [PATCH 006/140] Fix SonarScanner CI job and add project badges add test case for new vacancy fail or success implemented new vacancy fail or success add test case for update vacancy fail or success implemented update vacancy fail or success --- .gitlab/CODEOWNERS | 4 ++ README.md | 7 +++ core/tests/test_create_vacancies.py | 66 +++++++++++++++++++++++++++++ core/views/vacancies.py | 38 +++++++++++++++-- sonar-project.properties | 1 + 5 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 .gitlab/CODEOWNERS create mode 100644 core/tests/test_create_vacancies.py diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS new file mode 100644 index 0000000..a690232 --- /dev/null +++ b/.gitlab/CODEOWNERS @@ -0,0 +1,4 @@ +# Code owners file + +## Changes to these file(s) require approval from the teaching team +sonar-project.properties @addianto @hafiyyan94 \ No newline at end of file diff --git a/README.md b/README.md index 3020546..3734ba0 100755 --- a/README.md +++ b/README.md @@ -2,6 +2,13 @@ > Internship matchmaking platform for students and companies. +[![pipeline status](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/badges/master/pipeline.svg)](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/commits/master) +[![coverage report](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/badges/master/coverage.svg)](https://gitlab.cs.ui.ac.id/pmpl/class-project/kape/commits/master) + +[![Quality Gate Status](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=alert_status)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) +[![Bugs](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=bugs)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) +[![Code Smells](https://pmpl.cs.ui.ac.id/sonarqube/api/project_badges/measure?project=id.ac.ui.cs.foss%3Akape&metric=code_smells)](https://pmpl.cs.ui.ac.id/sonarqube/dashboard?id=id.ac.ui.cs.foss%3Akape) + ## Table of Contents - [Install](#install) diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py new file mode 100644 index 0000000..3a8fd4a --- /dev/null +++ b/core/tests/test_create_vacancies.py @@ -0,0 +1,66 @@ +from datetime import datetime + +import requests_mock +from django.contrib.auth.models import User +from rest_framework import status +from rest_framework.test import APITestCase + +from core.models.accounts import Company, Student, Supervisor +from core.models.vacancies import Vacancy, Application + +class CreateAndUpdateVacancyTest(APITestCase): + def test_new_vacancy_success(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), + 'close_time': datetime.today(), 'name': 'new_vacancy', 'description': 'new_vacancy '}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancies = Vacancy.objects.count() + self.assertEqual(vacancies,1) + + def test_new_vacancy_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.today(), + 'close_time': datetime.fromtimestamp(0), 'name': 'new_vacancy', 'description': 'new_vacancy'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancies = Vacancy.objects.count() + self.assertEqual(vacancies,0) + + def test_update_vacancy_success(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), + 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_update_vacancy_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.today(), 'close_time': datetime.fromtimestamp(0), + 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/core/views/vacancies.py b/core/views/vacancies.py index e4b8b98..39f7422 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -21,9 +21,9 @@ from core.views.accounts import StudentViewSet class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): queryset = Vacancy.objects.all() serializer_class = VacancySerializer - serializer_action_classes = { - 'create': PostVacancySerializer - } + # serializer_action_classes = { + # 'create': PostVacancySerializer + # } permission_classes = [IsAdminOrCompany] pagination_class = PageNumberPagination @@ -44,6 +44,38 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): return self.get_paginated_response(VacancySerializer(page, many=True, context={'request': request}).data) return Response(VacancySerializer(vacancies, many=True, context={'request': request}).data) + def create(self, request): + data = request.data + company_set = Company.objects.filter(id=data['company']) + if len(company_set) == 0: + raise ValidationError('no company') + company = company_set[0] + open_time = data['open_time'] + close_time = data['close_time'] + name = data['name'] + description = data['description'] + if close_time < open_time: + raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) + vacancy.save() + return Response(status=status.HTTP_200_OK) + + def partial_update(self, request, pk): + data = request.data + vacancy = Vacancy.objects.get(pk=pk) + open_time = data['open_time'] + close_time = data['close_time'] + name = data['name'] + description = data['description'] + if close_time < open_time: + raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + vacancy.open_time = open_time + vacancy.close_time = close_time + vacancy.name = name + vacancy.description = description + vacancy.save() + return Response(status=status.HTTP_200_OK) + @detail_route(permission_classes=[IsAdminOrCompany]) def count(self, request, pk=None): vacancy = self.get_object() diff --git a/sonar-project.properties b/sonar-project.properties index 48a6c49..c3db74c 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -7,6 +7,7 @@ sonar.projectKey=id.ac.ui.cs.foss:kape sonar.exclusions=/.devcontainer/,/.gitlab/,*.config.js,/.tmp/, sonar.scm.provider=git +sonar.projectVersion=1.0.0 ## Authentication ### sonar.login=[pass token via CLI/CI] -- GitLab From 2a9e8aa557897bffea94c6bc61a7a8ff1a0cfdab Mon Sep 17 00:00:00 2001 From: Arga Ghulam Ahmad Date: Sat, 5 Oct 2019 19:09:39 +0700 Subject: [PATCH 007/140] Extract login process to a new method on FeedbackTests Remove duplications on FeedbackTests. --- core/admin.py | 4 +- core/migrations/0014_feedback.py | 27 ++++ core/models/feedbacks.py | 10 ++ core/serializers/feedbacks.py | 9 ++ core/tests/__init__.py | 1 + core/tests/test_feedbacks.py | 258 +++++++++++++++++++++++++++++++ core/views/feedbacks.py | 63 ++++++++ kape/urls.py | 2 + 8 files changed, 372 insertions(+), 2 deletions(-) create mode 100644 core/migrations/0014_feedback.py create mode 100644 core/models/feedbacks.py create mode 100644 core/serializers/feedbacks.py create mode 100644 core/tests/test_feedbacks.py create mode 100644 core/views/feedbacks.py diff --git a/core/admin.py b/core/admin.py index f30ded6..b54eadf 100755 --- a/core/admin.py +++ b/core/admin.py @@ -1,11 +1,11 @@ from django.contrib import admin from core.models.accounts import Company, Supervisor, Student +from core.models.feedbacks import Feedback from core.models.vacancies import Vacancy admin.site.register(Company) admin.site.register(Student) admin.site.register(Supervisor) admin.site.register(Vacancy) - - +admin.site.register(Feedback) diff --git a/core/migrations/0014_feedback.py b/core/migrations/0014_feedback.py new file mode 100644 index 0000000..e818319 --- /dev/null +++ b/core/migrations/0014_feedback.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-03 13:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0013_auto_20170602_1130'), + ] + + operations = [ + migrations.CreateModel( + name='Feedback', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('title', models.CharField(blank=True, default=b'', max_length=100)), + ('content', models.TextField()), + ], + options={ + 'ordering': ['created'], + }, + ), + ] diff --git a/core/models/feedbacks.py b/core/models/feedbacks.py new file mode 100644 index 0000000..c473ae8 --- /dev/null +++ b/core/models/feedbacks.py @@ -0,0 +1,10 @@ +from django.db import models + + +class Feedback(models.Model): + created = models.DateTimeField(auto_now_add=True) + title = models.CharField(max_length=100, blank=True, default='') + content = models.TextField() + + class Meta: + ordering = ['created'] diff --git a/core/serializers/feedbacks.py b/core/serializers/feedbacks.py new file mode 100644 index 0000000..2558730 --- /dev/null +++ b/core/serializers/feedbacks.py @@ -0,0 +1,9 @@ +from rest_framework import serializers + +from core.models.feedbacks import Feedback + + +class FeedbackSerializer(serializers.ModelSerializer): + class Meta: + model = Feedback + fields = ['id', 'title', 'content'] diff --git a/core/tests/__init__.py b/core/tests/__init__.py index 76d673e..e8d87c6 100755 --- a/core/tests/__init__.py +++ b/core/tests/__init__.py @@ -1,3 +1,4 @@ # __init__.py from core.tests.test_accounts import LoginTests, RegisterTests from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests +from core.tests.test_feedbacks import FeedbacksTests diff --git a/core/tests/test_feedbacks.py b/core/tests/test_feedbacks.py new file mode 100644 index 0000000..f45dba9 --- /dev/null +++ b/core/tests/test_feedbacks.py @@ -0,0 +1,258 @@ +import requests_mock +from rest_framework import status +from rest_framework.test import APITestCase + +from core.models.feedbacks import Feedback + + +class FeedbacksTests(APITestCase): + def login(self, m): + # Login + m.get('https://akun.cs.ui.ac.id/oauth/token/verify/?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', + json={"username": 'dummy.mahasiswa', "role": 'mahasiswa', "identity_number": '1234567890'}, + status_code=200) + m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={ + "username": "dummy.mahasiswa", + "nama": "Dummy Mahasiswa", + "state": 1, + "kode_org": "01.00.12.01:mahasiswa", + "kodeidentitas": "1234567890", + "nama_role": "mahasiswa" + }, status_code=200) + m.get( + 'https://api.cs.ui.ac.id/siakngcs/mahasiswa/1234567890?client_id=X3zNkFmepkdA47ASNMDZRX3Z9gqSU1Lwywu5WepG', + json={ + "kota_lahir": "kota_kota", + "tgl_lahir": "2017-12-31", + "program": [{ + "nm_org": "Ilmu Informasi", + "angkatan": "2017" + }] + }, status_code=200) + login_url = '/api/login/' + self.client.post(login_url, {'username': 'dummy.mahasiswa', 'password': 'lalala', 'login-type': 'sso-ui'}, + format='json') + + @requests_mock.Mocker() + def test_feedback_list_with_more_than_10_feedback_and_with_page_number(self, m): + self.login(m) + + # test_feedback_list_with_more_than_10_feedback_and_with_page_number + for i in range(15): + Feedback.objects.create(content="a feedback", title="a title") + + feedbacks_url = '/api/feedbacks/' + feedbacks_url_page_1 = '/api/feedbacks/?page=1' + feedbacks_url_page_2 = '/api/feedbacks/?page=2' + + response1 = self.client.get(feedbacks_url_page_1) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 15) + self.assertIn(feedbacks_url_page_2, response1.data['next']) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(len(response1.data['results']), 10) + + response2 = self.client.get(feedbacks_url_page_2) + self.assertEqual(response2.status_code, status.HTTP_200_OK) + self.assertEqual(response2.data['count'], 15) + self.assertIn(feedbacks_url, response2.data['previous']) + self.assertEqual(response2.data['next'], None) + self.assertEqual(len(response2.data['results']), 5) + + @requests_mock.Mocker() + def test_feedback_list_with_more_than_10_feedback_and_without_page_number(self, m): + self.login(m) + + # test_feedback_list_with_more_than_10_feedback_and_without_page_number + for i in range(15): + Feedback.objects.create(content="a feedback", title="a title") + + feedbacks_url = '/api/feedbacks/' + feedbacks_url_page_2 = '/api/feedbacks/?page=2' + + response1 = self.client.get(feedbacks_url) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 15) + self.assertIn(feedbacks_url_page_2, response1.data['next']) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(len(response1.data['results']), 10) + + response2 = self.client.get(feedbacks_url_page_2) + self.assertEqual(response2.status_code, status.HTTP_200_OK) + self.assertEqual(response2.data['count'], 15) + self.assertIn(feedbacks_url, response2.data['previous']) + self.assertEqual(response2.data['next'], None) + self.assertEqual(len(response2.data['results']), 5) + + @requests_mock.Mocker() + def test_feedback_list_with_less_than_or_equals_10_feedbacks_and_with_zero_feedback_and_without_page_number(self, + m): + self.login(m) + + # test_feedback_list_with_more_than_10_feedback_and_without_page_number + feedbacks_url = '/api/feedbacks/' + + response1 = self.client.get(feedbacks_url) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 0) + self.assertEqual(response1.data['next'], None) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(len(response1.data['results']), 0) + + @requests_mock.Mocker() + def test_feedback_list_with_less_than_or_equals_10_feedbacks_and_with_more_than_zero_feedback_and_with_page_number( + self, m): + self.login(m) + + # test_feedback_list_with_less_than_10_feedbacks_and_with_more_than_zero_feedback_and_with_page_number + for i in range(5): + Feedback.objects.create(content="a feedback", title="a title") + + feedbacks_url_page_1 = '/api/feedbacks/?page=1' + + response1 = self.client.get(feedbacks_url_page_1) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 5) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(response1.data['next'], None) + self.assertEqual(len(response1.data['results']), 5) + + @requests_mock.Mocker() + def test_feedback_list_with_less_than_or_equals_10_feedbacks_and_with_more_than_zero_feedback_and_without_page_number( + self, + m): + self.login(m) + + # test_feedback_list_with_less_than_10_feedbacks_and_with_more_than_zero_feedback_and_without_page_number + for i in range(5): + Feedback.objects.create(content="a feedback", title="a title") + + feedbacks_url = '/api/feedbacks/' + + response1 = self.client.get(feedbacks_url) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 5) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(response1.data['next'], None) + self.assertEqual(len(response1.data['results']), 5) + + @requests_mock.Mocker() + def test_feedback_list_with_less_than_or_equals_10_feedbacks_and_with_zero_feedback_and_with_page_number(self, m): + self.login(m) + + # test_feedback_list_with_less_than_10_feedbacks_and_with_zero_feedback_and_with_page_number + feedbacks_url = '/api/feedbacks/?page=1' + + response1 = self.client.get(feedbacks_url) + self.assertEqual(response1.status_code, status.HTTP_200_OK) + self.assertEqual(response1.data['count'], 0) + self.assertEqual(response1.data['next'], None) + self.assertEqual(response1.data['previous'], None) + self.assertEqual(len(response1.data['results']), 0) + + @requests_mock.Mocker() + def test_feedbacks_create_with_title_and_content(self, m): + self.login(m) + + # test_feedbacks_create_with_title_and_content + feedbacks_url = '/api/feedbacks/' + response = self.client.post(feedbacks_url, + {"content": "a content", "title": "a title"}) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["title"], "a title") + self.assertEqual(response.data["content"], "a content") + + @requests_mock.Mocker() + def test_feedbacks_create_without_title_and_with_content(self, m): + self.login(m) + + # test_feedbacks_create_without_title_and_with_content + feedbacks_url = '/api/feedbacks/' + response = self.client.post(feedbacks_url, + {"content": "a content"}) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data['detail'], "Please send a json object that have title and content property") + + @requests_mock.Mocker() + def test_feedbacks_create_without_content_and_with_title(self, m): + self.login(m) + + # test_feedbacks_create_without_content_and_with_title + feedbacks_url = '/api/feedbacks/' + response = self.client.post(feedbacks_url, + {"title": "a title"}) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data['detail'], "Please send a json object that have title and content property") + + @requests_mock.Mocker() + def test_feedbacks_create_without_content_and_without_title(self, m): + self.login(m) + + # test_feedbacks_create_without_content_and_without_title + feedbacks_url = '/api/feedbacks/' + response = self.client.post(feedbacks_url, + {}) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data['detail'], "Please send a json object that have title and content property") + + @requests_mock.Mocker() + def test_feedbacks_delete_with_exist_data_and_with_data_id(self, m): + self.login(m) + + # test_feedbacks_delete_with_exist_data_and_with_data_id + + new_feedback = Feedback(title="a title", content="a content") + new_feedback.save() + feedback_id = new_feedback.id + + feedbacks_url = '/api/feedbacks/' + str(feedback_id) + '/' + response = self.client.delete(feedbacks_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["detail"], "Feedback with id {} was removed".format(feedback_id)) + + @requests_mock.Mocker() + def test_feedbacks_delete_with_exist_data_and_with_data_id(self, m): + self.login(m) + + # test_feedbacks_delete_with_exist_data_and_with_data_id + + new_feedback = Feedback(title="a title", content="a content") + new_feedback.save() + feedback_id = new_feedback.id + + feedbacks_url = '/api/feedbacks/' + str(feedback_id) + '/' + response = self.client.delete(feedbacks_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["detail"], "Feedback with id {} was removed".format(feedback_id)) + + @requests_mock.Mocker() + def test_feedbacks_delete_with_not_exist_data_and_with_data_id(self, m): + self.login(m) + + # test_feedbacks_delete_with_not_exist_data_and_with_data_id + new_feedback = Feedback(title="a title", content="a content") + new_feedback.save() + feedback_id = new_feedback.id + new_feedback.delete() + + feedbacks_url = '/api/feedbacks/' + str(feedback_id) + '/' + response = self.client.delete(feedbacks_url) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data["detail"], "Feedback with id {} doesn't exist".format(feedback_id)) + + @requests_mock.Mocker() + def test_feedbacks_delete_without_data_id(self, m): + self.login(m) + + # test_feedbacks_delete_without_data_id + feedbacks_url = '/api/feedbacks/' + response = self.client.delete(feedbacks_url) + + self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED) diff --git a/core/views/feedbacks.py b/core/views/feedbacks.py new file mode 100644 index 0000000..42464b6 --- /dev/null +++ b/core/views/feedbacks.py @@ -0,0 +1,63 @@ +from rest_framework import viewsets, status +from rest_framework.response import Response + +from core.lib.permissions import IsAdminOrStudent +from core.models.feedbacks import Feedback +from core.serializers.feedbacks import FeedbackSerializer + + +class FeedbackViewSet(viewsets.GenericViewSet): + """ + This viewset automatically provides `list`, `create`, `retrieve`, + `update` and `destroy` feedback actions. + + Additionally we also provide an extra `highlight` action. + """ + queryset = Feedback.objects.all() + serializer_class = FeedbackSerializer + permission_classes = [IsAdminOrStudent] + + def list(self, request): + """ + Get list of feedbacks + --- + """ + feedbacks = Feedback.objects.all() + page = self.paginate_queryset(feedbacks) + serialized_page_data = FeedbackSerializer(page, many=True, context={'request': request}).data + print (serialized_page_data) + return self.get_paginated_response(serialized_page_data) + + def create(self, request): + """ + Create a feedback + --- + """ + if 'title' in request.data and 'content' in request.data: + new_feedback = Feedback(title=request.data['title'], content=request.data['content']) + new_feedback.save() + serialized_new_feedback = FeedbackSerializer(new_feedback, context={'request': request}) + serialized_new_feedback_data = serialized_new_feedback.data + print(serialized_new_feedback_data) + return Response(serialized_new_feedback_data) + else: + message = {"detail": "Please send a json object that have title and content property"} + print(message) + return Response(message, status=status.HTTP_400_BAD_REQUEST) + + def destroy(self, request, pk): + """ + Remove feedback {id} + --- + """ + if Feedback.objects.filter(id=pk).count() != 0: + print (request.data) + delete_feedback = Feedback.objects.get(id=pk) + delete_feedback.delete() + message = {"detail": "Feedback with id {} was removed".format(pk)} + print(message) + return Response(message, status=status.HTTP_200_OK) + else: + message = {"detail": "Feedback with id {} doesn't exist".format(pk)} + print(message) + return Response(message, status=status.HTTP_400_BAD_REQUEST) diff --git a/kape/urls.py b/kape/urls.py index 21a1d46..5ae9c07 100755 --- a/kape/urls.py +++ b/kape/urls.py @@ -26,6 +26,7 @@ from core.views.accounts import StudentViewSet, CompanyViewSet, SupervisorViewSe CompanyRegisterViewSet from core.views.vacancies import VacancyViewSet, BookmarkedVacancyByStudentViewSet, StudentApplicationViewSet, \ CompanyApplicationViewSet, CompanyVacanciesViewSet, ApplicationViewSet +from core.views.feedbacks import FeedbackViewSet schema_view = get_swagger_view() router = routers.DefaultRouter() @@ -37,6 +38,7 @@ router.register(r'login', LoginViewSet) router.register(r'register', CompanyRegisterViewSet) router.register(r'vacancies', VacancyViewSet) router.register(r'applications', ApplicationViewSet) +router.register(r'feedbacks', FeedbackViewSet) # router.register(r'students/(?P\d+)/profile', StudentProfileViewSet) router.register(r'students/(?P\d+)/bookmarked-vacancies', BookmarkedVacancyByStudentViewSet, base_name='bookmarked-vacancy-list') -- GitLab From d092361576c9fca74e3ef089173fdc6624528813 Mon Sep 17 00:00:00 2001 From: Fajrin Kingwijati Date: Sat, 5 Oct 2019 19:11:36 +0700 Subject: [PATCH 008/140] 1606837631-10 Sebagai perusahaan, saya ingin menyimpan kategori perusahaan #10 --- assets/js/CompanyProfile.jsx | 2 +- assets/js/__test__/CompanyProfile-test.jsx | 1 + assets/js/components/CompanyRegisterModal.jsx | 39 ++++++++++++++++++- core/migrations/0014_company_category.py | 20 ++++++++++ core/models/accounts.py | 1 + core/tests/test_accounts.py | 2 +- core/views/accounts.py | 5 ++- 7 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 core/migrations/0014_company_category.py diff --git a/assets/js/CompanyProfile.jsx b/assets/js/CompanyProfile.jsx index dca18ab..3c909b0 100644 --- a/assets/js/CompanyProfile.jsx +++ b/assets/js/CompanyProfile.jsx @@ -21,7 +21,7 @@ export default class CompanyProfile extends React.Component {

{ data.name }

{ data.address }t

-

{ data.description }

+

{ data.category } - { data.description }

diff --git a/assets/js/__test__/CompanyProfile-test.jsx b/assets/js/__test__/CompanyProfile-test.jsx index 8e80e7b..e1a9d65 100644 --- a/assets/js/__test__/CompanyProfile-test.jsx +++ b/assets/js/__test__/CompanyProfile-test.jsx @@ -24,6 +24,7 @@ const companyUser = { verified: true, logo: 'http://localhost:8001/files/company-logo/8a258a48-3bce-4873-b5d1-538b360d0059.png', address: 'Jl. Kebayoran Baru nomor 13, Jakarta Barat', + category: 'Belum ada kategori perusahaan', }, supervisor: null, student: null, diff --git a/assets/js/components/CompanyRegisterModal.jsx b/assets/js/components/CompanyRegisterModal.jsx index e33732d..7843895 100644 --- a/assets/js/components/CompanyRegisterModal.jsx +++ b/assets/js/components/CompanyRegisterModal.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { browserHistory } from 'react-router'; -import { Modal, Button, Form, Input, TextArea, Header, Icon } from 'semantic-ui-react'; +import { Modal, Button, Form, Input, TextArea, Header, Icon, Dropdown } from 'semantic-ui-react'; import ModalAlert from './../components/ModalAlert'; import Server from './../lib/Server'; import Storage from './../lib/Storage'; @@ -17,6 +17,26 @@ export default class CompanyRegisterModal extends React.Component { this.handleSubmit = this.handleSubmit.bind(this); } + categoryOptions = [ + { value: 'Perusahaan Asuransi', text: 'Perusahaan Asuransi' }, + { value: 'Perusahaan Bioteknologi', text: 'Perusahaan Bioteknologi' }, + { value: 'Perusahaan Elektronik', text: 'Perusahaan Elektronik' }, + { value: 'Perusahaan Energi', text: 'Perusahaan Energi' }, + { value: 'Perusahaan Farmasi', text: 'Perusahaan Farmasi' }, + { value: 'Firma Akuntansi', text: 'Firma Akuntansi' }, + { value: 'Agen Periklanan', text: 'Agen Periklanan' }, + { value: 'Perusahaan Internet', text: 'Perusahaan Internet' }, + { value: 'Perusahaan Jasa', text: 'Perusahaan Jasa' }, + { value: 'Perusahaan Komputer', text: 'Perusahaan Komputer' }, + { value: 'Perusahaan Konsultansi', text: 'Perusahaan Konsultansi' }, + { value: 'Perusahaan Logistik', text: 'Perusahaan Logistik' }, + { value: 'Perusahaan Media', text: 'Perusahaan Media' }, + { value: 'Perusahaan Perangkat Keras', text: 'Perusahaan Perangkat Keras' }, + { value: 'Perusahaan Perangkat Lunak', text: 'Perusahaan Perangkat Lunak' }, + { value: 'Perusahaan Teknologi', text: 'Perusahaan Teknologi' }, + { value: 'Perusahaan Telekomunikasi', text: 'Perusahaan Telekomunikasi' }, + ] + componentWillUpdate() { this.fixBody(); } @@ -34,6 +54,10 @@ export default class CompanyRegisterModal extends React.Component { this.setState({ [e.target.name]: e.target.value }); }; + handleSelectChange = (e, data) => { + this.setState({ [data.name]: data.value }); + } + handleFile = (e) => { this.setState({ [e.target.name]: e.target.files[0] }); }; @@ -99,6 +123,19 @@ export default class CompanyRegisterModal extends React.Component { + + + + + Date: Sat, 5 Oct 2019 22:23:28 +0700 Subject: [PATCH 009/140] 1606895171 41 --- .DS_Store | Bin 0 -> 6148 bytes assets/js/ProfilePage.jsx | 19 + assets/js/__test__/ProfilePage-test.jsx | 4 +- core/migrations/0014_student_region.py | 20 + core/migrations/0015_merge_20191005_1957.py | 17 + core/models/accounts.py | 1 + core/serializers/accounts.py | 6 +- core/tests/test_accounts.py | 5 + package-lock.json | 10643 ++++++++++++++++++ requirements.txt | 32 +- 10 files changed, 10727 insertions(+), 20 deletions(-) create mode 100644 .DS_Store create mode 100644 core/migrations/0014_student_region.py create mode 100644 core/migrations/0015_merge_20191005_1957.py create mode 100644 package-lock.json mode change 100755 => 100644 requirements.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0No. Hp + + + + @@ -239,6 +246,18 @@ export default class ProfilePage extends React.Component { + + + + + + + + +

{ this.state.region || 'N/A' }

+
+
+
diff --git a/assets/js/__test__/ProfilePage-test.jsx b/assets/js/__test__/ProfilePage-test.jsx index a98b345..1adcf18 100644 --- a/assets/js/__test__/ProfilePage-test.jsx +++ b/assets/js/__test__/ProfilePage-test.jsx @@ -139,7 +139,7 @@ describe('ProfilePage', () => { const profile = ReactTestUtils.renderIntoDocument( ); - const checkboxNode = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[4]; + const checkboxNode = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[5]; const checkbox = false; checkboxNode.value = checkbox; profile.getProfile().then(()=> expect(profile.state.show_transcript).to.equal(true)); @@ -213,4 +213,4 @@ describe('ProfilePage', () => { }); -}); +}); \ No newline at end of file diff --git a/core/migrations/0014_student_region.py b/core/migrations/0014_student_region.py new file mode 100644 index 0000000..702015e --- /dev/null +++ b/core/migrations/0014_student_region.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-05 10:07 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0013_auto_20170602_1130'), + ] + + operations = [ + migrations.AddField( + model_name='student', + name='region', + field=models.CharField(blank=True, max_length=30, null=True), + ), + ] diff --git a/core/migrations/0015_merge_20191005_1957.py b/core/migrations/0015_merge_20191005_1957.py new file mode 100644 index 0000000..fe7de18 --- /dev/null +++ b/core/migrations/0015_merge_20191005_1957.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-05 12:57 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0014_feedback'), + ('core', '0014_company_category'), + ('core', '0014_student_region'), + ] + + operations = [ + ] diff --git a/core/models/accounts.py b/core/models/accounts.py index ed406bf..a118168 100644 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -65,6 +65,7 @@ class Student(models.Model): batch = models.CharField(max_length=4, blank=True, null=True) show_transcript = models.BooleanField(default=False) photo = models.FileField(upload_to=get_student_photo_file_path, null=True, blank=True, validators=[validate_image_file_extension]) + region = models.CharField(max_length=30, blank=True, null=True) @property def name(self): diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py index e57747c..5f3e8d1 100644 --- a/core/serializers/accounts.py +++ b/core/serializers/accounts.py @@ -19,7 +19,7 @@ class StudentSerializer(serializers.ModelSerializer): class Meta: model = Student fields = ['id', 'name', 'user', 'npm', 'resume', 'phone_number', 'birth_place', 'birth_date', 'major', 'batch', \ - 'show_transcript', 'photo', 'accepted_no'] + 'show_transcript', 'photo', 'accepted_no', 'region'] def get_accepted_no(self, obj): apps = Application.objects.filter(student=obj, status=4) @@ -41,6 +41,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): 'resume': resume, 'email': instance.user.email, 'phone_number': instance.phone_number, + 'region': instance.region, 'photo': photo, 'show_transcript': instance.show_transcript } @@ -49,6 +50,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): instance.resume = validated_data.get('resume', instance.resume) instance.show_transcript = validated_data.get('show_transcript', instance.show_transcript) instance.phone_number = validated_data.get('phone_number', instance.phone_number) + instance.region = validated_data.get('region', instance.region) instance.photo = validated_data.get('photo', instance.photo) instance.user.email = validated_data.get('email', instance.user.email) instance.save() @@ -57,7 +59,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): class Meta: model = Student - fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript'] + fields = ['resume', 'email', 'phone_number', 'region', 'photo', 'show_transcript'] class CompanyUpdateSerializer(serializers.ModelSerializer): diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index 35812f9..d1ee00d 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -136,6 +136,11 @@ class ProfileUpdateTests(APITestCase): self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) self.assertEqual(response.data.get('phone_number'), '08123123123') + url = '/api/students/' + str(student_id) + "/profile/" + response = self.client.patch(url, {'region': 'Indonesia'}, format='multipart') + self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) + self.assertEqual(response.data.get('region'), 'Indonesia') + url = '/api/students/' + str(student_id) + "/profile/" response = self.client.patch(url, {'email': 'saasdasd'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1a8e2aa --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10643 @@ +{ + "name": "kape", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "add-dom-event-listener": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz", + "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==", + "requires": { + "object-assign": "4.x" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "alter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", + "dev": true, + "requires": { + "stable": "~0.1.3" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.3.0.tgz", + "integrity": "sha1-y4qZhOKGJxHIPICt5bj1yg3itGc=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "array.prototype.find": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.0.tgz", + "integrity": "sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0" + } + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-traverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", + "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz", + "integrity": "sha1-J5ZkJyNXOFlWVjP8YnRES+4vjOM=" + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "axios": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", + "requires": { + "follow-redirects": "1.0.0" + } + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "chokidar": "^1.6.1", + "commander": "^2.11.0", + "convert-source-map": "^1.5.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "output-file-sync": "^1.1.2", + "path-is-absolute": "^1.0.1", + "slash": "^1.0.0", + "source-map": "^0.5.6", + "v8flags": "^2.1.1" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "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": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "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-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-istanbul": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/babel-istanbul/-/babel-istanbul-0.3.20.tgz", + "integrity": "sha1-M7HralCJEEKhlUVp3KXPrymXreA=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "babel-core": "5.8.x", + "babel-runtime": "5.8.x", + "escodegen": "1.6.x", + "esprima": "2.5.x", + "fileset": "0.2.x", + "handlebars": "3.0.0", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "source-map": "0.4.x", + "supports-color": "1.3.x", + "which": "1.0.x", + "wordwrap": "0.0.x" + }, + "dependencies": { + "babel-core": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz", + "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=", + "dev": true, + "requires": { + "babel-plugin-constant-folding": "^1.0.1", + "babel-plugin-dead-code-elimination": "^1.0.2", + "babel-plugin-eval": "^1.0.1", + "babel-plugin-inline-environment-variables": "^1.0.1", + "babel-plugin-jscript": "^1.0.4", + "babel-plugin-member-expression-literals": "^1.0.1", + "babel-plugin-property-literals": "^1.0.1", + "babel-plugin-proto-to-assign": "^1.0.3", + "babel-plugin-react-constant-elements": "^1.0.3", + "babel-plugin-react-display-name": "^1.0.3", + "babel-plugin-remove-console": "^1.0.1", + "babel-plugin-remove-debugger": "^1.0.1", + "babel-plugin-runtime": "^1.0.7", + "babel-plugin-undeclared-variables-check": "^1.0.2", + "babel-plugin-undefined-to-void": "^1.1.6", + "babylon": "^5.8.38", + "bluebird": "^2.9.33", + "chalk": "^1.0.0", + "convert-source-map": "^1.1.0", + "core-js": "^1.0.0", + "debug": "^2.1.1", + "detect-indent": "^3.0.0", + "esutils": "^2.0.0", + "fs-readdir-recursive": "^0.1.0", + "globals": "^6.4.0", + "home-or-tmp": "^1.0.0", + "is-integer": "^1.0.4", + "js-tokens": "1.0.1", + "json5": "^0.4.0", + "lodash": "^3.10.0", + "minimatch": "^2.0.3", + "output-file-sync": "^1.1.0", + "path-exists": "^1.0.0", + "path-is-absolute": "^1.0.0", + "private": "^0.1.6", + "regenerator": "0.8.40", + "regexpu": "^1.3.0", + "repeating": "^1.1.2", + "resolve": "^1.1.6", + "shebang-regex": "^1.0.0", + "slash": "^1.0.0", + "source-map": "^0.5.0", + "source-map-support": "^0.2.10", + "to-fast-properties": "^1.0.0", + "trim-right": "^1.0.0", + "try-resolve": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=", + "dev": true, + "requires": { + "core-js": "^1.0.0" + } + }, + "babylon": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz", + "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=", + "dev": true + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "detect-indent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "minimist": "^1.1.0", + "repeating": "^1.1.0" + } + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", + "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=", + "dev": true + }, + "globals": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", + "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08=", + "dev": true + }, + "home-or-tmp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.1", + "user-home": "^1.1.1" + } + }, + "js-tokens": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", + "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=", + "dev": true + }, + "json5": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-support": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", + "dev": true, + "requires": { + "source-map": "0.1.32" + }, + "dependencies": { + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "supports-color": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", + "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=", + "dev": true + } + } + }, + "babel-istanbul-instrumenter-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-istanbul-instrumenter-loader/-/babel-istanbul-instrumenter-loader-1.0.1.tgz", + "integrity": "sha1-1LSYIJXd0eQ1wfyTPF4z55nkGNc=", + "dev": true, + "requires": { + "babel-istanbul": "^0.3.20" + } + }, + "babel-loader": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", + "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "loader-utils": "^0.2.16", + "mkdirp": "^0.5.1", + "object-assign": "^4.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-constant-folding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", + "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4=", + "dev": true + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", + "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U=", + "dev": true + }, + "babel-plugin-eval": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", + "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo=", + "dev": true + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", + "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4=", + "dev": true + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", + "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w=", + "dev": true + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", + "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM=", + "dev": true + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", + "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY=", + "dev": true + }, + "babel-plugin-proto-to-assign": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", + "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=", + "dev": true, + "requires": { + "lodash": "^3.9.3" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", + "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o=", + "dev": true + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", + "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw=", + "dev": true + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", + "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c=", + "dev": true + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", + "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc=", + "dev": true + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", + "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-undeclared-variables-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=", + "dev": true, + "requires": { + "leven": "^1.0.2" + } + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", + "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=", + "dev": true + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-es2016": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz", + "integrity": "sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s=", + "dev": true, + "requires": { + "babel-plugin-transform-exponentiation-operator": "^6.24.1" + } + }, + "babel-preset-es2017": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", + "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.24.1" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.22.0" + } + }, + "babel-preset-latest": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz", + "integrity": "sha1-Z33gaRVKdIXC0lxXfAL2JLhbheg=", + "dev": true, + "requires": { + "babel-preset-es2015": "^6.24.1", + "babel-preset-es2016": "^6.24.1", + "babel-preset-es2017": "^6.24.1" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "requires": { + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "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": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "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": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "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": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "breakable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", + "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", + "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + } + }, + "chai-as-promised": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", + "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=", + "dev": true + }, + "chai-dom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/chai-dom/-/chai-dom-1.8.1.tgz", + "integrity": "sha512-ysWinPU3fc+Bp+xMn/u2/PQyk65jnnCZl0alWupUuFFMGaG+KxrUnsoYOgjMDhSKPkm3WqE/5RTnOowIb7asMg==", + "dev": true + }, + "chai-jquery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chai-jquery/-/chai-jquery-2.1.0.tgz", + "integrity": "sha512-DiKSXcmInlt4d+WC5PkisDL5MsgJPd1lCSfZ3NgeSZJ34CJntEIpPOCdpalH2IhOWHeLpESJaiuHFxX1dpZ6bw==", + "dev": true + }, + "chai-things": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chai-things/-/chai-things-0.2.0.tgz", + "integrity": "sha1-xVEoN4+bs5nplPAAUhUZhO1uvnA=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true, + "optional": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "^4.5.0" + } + }, + "commander": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz", + "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "dev": true, + "requires": { + "commander": "^2.5.0", + "detective": "^4.3.1", + "glob": "^5.0.15", + "graceful-fs": "^4.1.2", + "iconv-lite": "^0.4.5", + "mkdirp": "^0.5.0", + "private": "^0.1.6", + "q": "^1.1.2", + "recast": "^0.11.17" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" + } + } + } + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-classes": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", + "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", + "requires": { + "component-indexof": "0.0.3" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-indexof": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + } + } + }, + "compression-webpack-plugin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-0.3.2.tgz", + "integrity": "sha1-Ht+w50nXNm0+cBZwxGM1mywM9wQ=", + "dev": true, + "requires": { + "async": "0.2.x", + "node-zopfli": "^2.0.0", + "webpack-sources": "^0.1.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "crypto-browserify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", + "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "dev": true, + "requires": { + "browserify-aes": "0.4.0", + "pbkdf2-compat": "2.0.1", + "ripemd160": "0.2.0", + "sha.js": "2.2.6" + } + }, + "css-animation": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", + "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", + "requires": { + "babel-runtime": "6.x", + "component-classes": "^1.2.5" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "optional": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "defs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", + "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", + "dev": true, + "requires": { + "alter": "~0.2.0", + "ast-traverse": "~0.1.1", + "breakable": "~1.0.0", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "simple-fmt": "~0.1.0", + "simple-is": "~0.2.0", + "stringmap": "~0.2.2", + "stringset": "~0.2.1", + "tryor": "~0.1.2", + "yargs": "~3.27.0" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-scroll-into-view": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz", + "integrity": "sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=" + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + }, + "dependencies": { + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + } + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "envify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-0.2.0.tgz", + "integrity": "sha1-ZFCRz68Seff4NkqJOwz4HGgOy+A=", + "dev": true, + "requires": { + "falafel": "~0.2.1", + "through": "~2.3.4" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", + "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", + "dev": true, + "requires": { + "stackframe": "^0.3.1" + } + }, + "es-abstract": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", + "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", + "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.51" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.6.1.tgz", + "integrity": "sha1-Nn3hfYUQVA0SvG3Liz+Rg5EmWBU=", + "dev": true, + "requires": { + "esprima": "^1.2.2", + "estraverse": "^1.9.1", + "esutils": "^1.1.6", + "optionator": "^0.5.0", + "source-map": "~0.1.40" + }, + "dependencies": { + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=", + "dev": true + }, + "esutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", + "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "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" + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "eslint-config-airbnb": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-14.1.0.tgz", + "integrity": "sha1-NV0pAEC7+OAL+LSxn0twy+fCMX8=", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^11.1.0" + } + }, + "eslint-config-airbnb-base": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz", + "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==", + "dev": true, + "requires": { + "eslint-restricted-globals": "^0.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-module-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", + "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-4.0.0.tgz", + "integrity": "sha1-d5uw/nsI2lZKQiYkkR3hAGHgSO4=", + "dev": true, + "requires": { + "aria-query": "^0.3.0", + "ast-types-flow": "0.0.7", + "damerau-levenshtein": "^1.0.0", + "emoji-regex": "^6.1.0", + "jsx-ast-utils": "^1.0.0", + "object-assign": "^4.0.1" + } + }, + "eslint-plugin-react": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", + "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "dev": true, + "requires": { + "array.prototype.find": "^2.0.1", + "doctrine": "^1.2.2", + "has": "^1.0.1", + "jsx-ast-utils": "^1.3.4", + "object.assign": "^4.0.4" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "dev": true + }, + "eslint-watch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/eslint-watch/-/eslint-watch-3.1.5.tgz", + "integrity": "sha512-6iEMRwo6RUpSaYyU7547qWQbgUKSYtkn4eGId/hZJvi+gMnRVeNfIzv/HAOPUmH6y53p1Ks9oNvWm/xZh4RPGQ==", + "dev": true, + "requires": { + "babel-polyfill": "^6.20.0", + "bluebird": "^3.5.1", + "chalk": "^2.1.0", + "chokidar": "^2.0.0", + "debug": "^3.0.1", + "keypress": "^0.2.1", + "lodash": "^4.17.4", + "optionator": "^0.8.2", + "source-map-support": "^0.5.3", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "unicons": "0.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "bluebird": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.0.tgz", + "integrity": "sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.5.0.tgz", + "integrity": "sha1-84ekb9NEwbGjm6+MIL+0O20AWMw=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" + }, + "dependencies": { + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "^0.1.0" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "falafel": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-0.2.1.tgz", + "integrity": "sha1-nvxRzhnsVykIayKuiJ5dfQ4lZgE=", + "dev": true, + "requires": { + "esprima": "github:substack/esprima#is-keyword" + }, + "dependencies": { + "esprima": { + "version": "github:substack/esprima#0a7f8489a11b44b019ce168506f535f22d0be290", + "from": "github:substack/esprima#is-keyword", + "dev": true + } + } + }, + "fast-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", + "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "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" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "fetch-mock": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-5.13.1.tgz", + "integrity": "sha512-eWUo2KI4sRGnRu8tKELCBfasALM5BfvrCxdI7J02j3eUM9mf+uYzJkURA0PSn/29JVapVrYFm+z+9XijXu1PdA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.3.0", + "node-fetch": "^1.3.3", + "path-to-regexp": "^1.7.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", + "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", + "dev": true, + "requires": { + "glob": "5.x", + "minimatch": "2.x" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + } + } + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "follow-redirects": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", + "requires": { + "debug": "^2.2.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "~1.1" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "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" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "handlebars": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-3.0.0.tgz", + "integrity": "sha1-f05Tf03WmShp1mwBt1BeujVhpdU=", + "dev": true, + "requires": { + "optimist": "^0.6.1", + "source-map": "^0.1.40", + "uglify-js": "~2.3" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "happypack": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/happypack/-/happypack-3.1.0.tgz", + "integrity": "sha1-i8VeNwG6z/cY04icuItQIWQcrVk=", + "requires": { + "async": "1.5.0", + "json-stringify-safe": "5.0.1", + "loader-utils": "0.2.16", + "mkdirp": "0.5.1", + "serialize-error": "^2.1.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw=", + "requires": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "query-string": "^4.2.2", + "warning": "^3.0.0" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.2.tgz", + "integrity": "sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw==", + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "optional": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-integer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", + "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", + "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isparta": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.1.1.tgz", + "integrity": "sha512-kGwkNqmALQzdfGhgo5o8kOA88p14R3Lwg0nfQ/qzv4IhB4rXarT9maPMaYbo6cms4poWbeulrlFlURLUR6rDwQ==", + "dev": true, + "requires": { + "babel-core": "^6.1.4", + "escodegen": "^1.6.1", + "esprima": "^4.0.0", + "istanbul": "0.4.5", + "mkdirp": "^0.5.0", + "nomnomnomnom": "^2.0.0", + "object-assign": "^4.0.1", + "source-map": "^0.5.0", + "which": "^1.0.9" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "isparta-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isparta-loader/-/isparta-loader-2.0.0.tgz", + "integrity": "sha1-RCX0lsk/dlu8603ZOFdtowdWbtE=", + "dev": true, + "requires": { + "isparta": "4.x.x" + } + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "handlebars": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz", + "integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "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" + } + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz", + "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=", + "dev": true, + "requires": { + "convert-source-map": "^1.3.0", + "istanbul-lib-instrument": "^1.1.3", + "loader-utils": "^0.2.16", + "object-assign": "^4.1.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "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": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + }, + "dependencies": { + "handlebars": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz", + "integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "dev": true + }, + "karma": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "1.7.3", + "source-map": "^0.5.3", + "tmp": "0.0.31", + "useragent": "^2.1.12" + }, + "dependencies": { + "bluebird": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.0.tgz", + "integrity": "sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "karma-chai-plugins": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/karma-chai-plugins/-/karma-chai-plugins-0.8.0.tgz", + "integrity": "sha1-4YN055tija27q6F37TSNEwh59o0=", + "dev": true, + "requires": { + "chai": "^3.4.1", + "chai-as-promised": "^5.1.0", + "chai-dom": "^1.2.2", + "chai-jquery": "^2.0.0", + "chai-things": "^0.2.0", + "sinon": "^1.17.2", + "sinon-chai": "^2.8.0" + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-coverage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.2.tgz", + "integrity": "sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw==", + "dev": true, + "requires": { + "dateformat": "^1.0.6", + "istanbul": "^0.4.0", + "lodash": "^4.17.0", + "minimatch": "^3.0.0", + "source-map": "^0.5.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.3.tgz", + "integrity": "sha1-O13/RmT6W41RlrmInj9hwforgNk=", + "dev": true, + "requires": { + "istanbul-api": "^1.3.1", + "minimatch": "^3.0.4" + } + }, + "karma-firefox-launcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", + "integrity": "sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ==", + "dev": true, + "requires": { + "is-wsl": "^2.1.0" + } + }, + "karma-mocha": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", + "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "karma-sourcemap-loader": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", + "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "karma-webpack": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.13.tgz", + "integrity": "sha512-2cyII34jfrAabbI2+4Rk4j95Nazl98FvZQhgSiqKUDarT317rxfv/EdzZ60CyATN4PQxJdO5ucR5bOOXkEVrXw==", + "dev": true, + "requires": { + "async": "^2.0.0", + "babel-runtime": "^6.0.0", + "loader-utils": "^1.0.0", + "lodash": "^4.0.0", + "source-map": "^0.5.6", + "webpack-dev-middleware": "^1.12.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "keypress": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz", + "integrity": "sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "dev": true + }, + "levn": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", + "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.0", + "type-check": "~0.3.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-utils": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.16.tgz", + "integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "~1.0.2", + "semver": "~4.3.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "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" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "mock-cookie": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/mock-cookie/-/mock-cookie-0.3.2.tgz", + "integrity": "sha1-K/VkO+oAJ7rGTPISa2r6XjAhX0U=", + "dev": true + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "optional": true + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-libs-browser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", + "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.1.4", + "buffer": "^4.9.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "3.3.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "0.0.1", + "os-browserify": "^0.2.0", + "path-browserify": "0.0.0", + "process": "^0.11.0", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.0.5", + "stream-browserify": "^2.0.1", + "stream-http": "^2.3.1", + "string_decoder": "^0.10.25", + "timers-browserify": "^2.0.2", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-pre-gyp": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", + "dev": true, + "optional": true, + "requires": { + "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" + }, + "dependencies": { + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "node-zopfli": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-zopfli/-/node-zopfli-2.0.3.tgz", + "integrity": "sha512-ydEByn1ljj+phArLpuFiIP3FBLkYMmN6SuNovPOJQ9owJewS5EULMo0dHzidgVkvMaS03E3bYkrv9utOXCLCuA==", + "dev": true, + "optional": true, + "requires": { + "commander": "^2.20.0", + "defaults": "^1.0.3", + "nan": "^2.13.2", + "node-pre-gyp": "^0.13.0" + } + }, + "nomnomnomnom": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", + "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", + "dev": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz", + "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==", + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz", + "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=", + "dev": true, + "requires": { + "deep-is": "~0.1.2", + "fast-levenshtein": "~1.0.0", + "levn": "~0.2.5", + "prelude-ls": "~1.1.1", + "type-check": "~0.3.1", + "wordwrap": "~0.0.2" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", + "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pbkdf2-compat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "rc-animate": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.10.0.tgz", + "integrity": "sha512-gZM3WteZO0e3X8B71KP0bs95EY2tAPRuiZyKnlhdLpOjTX/64SrhDZM3pT2Z8mJjKWNiiB5q2SSSf+BD8ljwVw==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.6", + "css-animation": "^1.3.2", + "prop-types": "15.x", + "raf": "^3.4.0", + "rc-util": "^4.8.0", + "react-lifecycles-compat": "^3.0.4" + }, + "dependencies": { + "rc-util": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.11.2.tgz", + "integrity": "sha512-BsQlyu5MnoJ/U1qYmv2OBJ41zLo2USJDwjalHXDORI/4tcwPyR9MCufIjZnI8bbRPSfwQsddc86izTtKVRUVRw==", + "requires": { + "add-dom-event-listener": "^1.1.0", + "babel-runtime": "6.x", + "prop-types": "^15.5.10", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^0.2.2" + } + } + } + }, + "rc-util": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-3.4.1.tgz", + "integrity": "sha1-S34LDHWTvbz/jtBF2I+7x3OnsGE=", + "requires": { + "add-dom-event-listener": "1.x", + "classnames": "2.x", + "shallowequal": "0.2.x" + } + }, + "react": { + "version": "15.4.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.4.2.tgz", + "integrity": "sha1-QfeZGyYYU5K6m66WyIiefgGDl+8=", + "requires": { + "fbjs": "^0.8.4", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0" + } + }, + "react-addons-test-utils": { + "version": "15.4.2", + "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.4.2.tgz", + "integrity": "sha1-k7yqcY/K5zYNQuj7HAl1bMNjAqI=", + "requires": { + "fbjs": "^0.8.4", + "object-assign": "^4.1.0" + } + }, + "react-ckeditor-wrapper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-ckeditor-wrapper/-/react-ckeditor-wrapper-1.1.2.tgz", + "integrity": "sha512-/COVfezpSKFQxC/OjFoZf1PyzxTvUxzndlpGjEcajzjRgKPzSFZiCoh/VqqwGaaHJROO9pePQ9JxmJy2YlzDAQ==", + "requires": { + "babel-runtime": "6.x", + "classnames": "2.x", + "dom-scroll-into-view": "1.x", + "happypack": "3.1.0", + "rc-animate": "2.x", + "rc-util": "3.x" + } + }, + "react-datepicker": { + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-0.44.0.tgz", + "integrity": "sha1-wJ8o06oG56yXBi8q8Gnkwdtdkn0=", + "requires": { + "classnames": "^2.2.5", + "moment": "^2.17.1", + "react-onclickoutside": "^5.9.0", + "tether": "^1.4.0" + } + }, + "react-deep-force-update": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.3.tgz", + "integrity": "sha512-lqD4eHKVuB65RyO/hGbEST53E2/GPbcIPcFYyeW/p4vNngtH4G7jnKGlU6u1OqrFo0uNfIvwuBOg98IbLHlNEA==", + "dev": true + }, + "react-dom": { + "version": "15.4.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.4.2.tgz", + "integrity": "sha1-AVNj8FsKH9Uq6e/dOgBg2QaVII8=", + "requires": { + "fbjs": "^0.8.1", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0" + } + }, + "react-hot-loader": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", + "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==", + "dev": true, + "requires": { + "global": "^4.3.0", + "react-deep-force-update": "^2.1.1", + "react-proxy": "^3.0.0-alpha.0", + "redbox-react": "^1.3.6", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "react-is": { + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz", + "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-onclickoutside": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-5.11.1.tgz", + "integrity": "sha1-ADFOUlZ89V+rqUyrus0RlhkHBiM=", + "requires": { + "create-react-class": "^15.5.x" + } + }, + "react-proxy": { + "version": "3.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz", + "integrity": "sha1-RABCa8+oDKpnJMd1VpUxUgn6Swc=", + "dev": true, + "requires": { + "lodash": "^4.6.1" + } + }, + "react-router": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.4.tgz", + "integrity": "sha512-5kIJXV1Yx+FYk0lDJoPQnt+qFf7HxS6XrIm2aCw0r3XQTxixFd0HSVlHenYRWKmSHlcvSQ7bpYWgdRwJGXWPKw==", + "requires": { + "create-react-class": "^15.5.1", + "history": "^3.0.0", + "hoist-non-react-statics": "^2.3.1", + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "prop-types": "^15.7.2", + "react-is": "^16.8.6", + "warning": "^3.0.0" + } + }, + "react-tap-event-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-tap-event-plugin/-/react-tap-event-plugin-2.0.1.tgz", + "integrity": "sha1-MWvrO8ZVbinshppyk+icgmqQdNI=", + "requires": { + "fbjs": "^0.8.6" + } + }, + "react-test-utils": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/react-test-utils/-/react-test-utils-0.0.1.tgz", + "integrity": "sha1-zWmjfD5Ncm40l+MlRioyeFoZwCY=", + "dev": true, + "requires": { + "envify": "~0.2.0", + "react": "~0.8.0" + }, + "dependencies": { + "react": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/react/-/react-0.8.0.tgz", + "integrity": "sha1-mu8NvD4FtE2WE5zb2qXXJ7BQbh4=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + } + }, + "recast": { + "version": "0.10.33", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", + "dev": true, + "requires": { + "ast-types": "0.8.12", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "private": "~0.1.5", + "source-map": "~0.5.0" + }, + "dependencies": { + "ast-types": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", + "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w=", + "dev": true + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redbox-react": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.6.0.tgz", + "integrity": "sha512-mLjM5eYR41yOp5YKHpd3syFeGq6B4Wj5vZr64nbLvTZW5ZLff4LYk7VE4ITpVxkZpCY6OZuqh0HiP3A3uEaCpg==", + "dev": true, + "requires": { + "error-stack-parser": "^1.3.6", + "object-assign": "^4.0.1", + "prop-types": "^15.5.4", + "sourcemapped-stacktrace": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator": { + "version": "0.8.40", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz", + "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=", + "dev": true, + "requires": { + "commoner": "~0.10.3", + "defs": "~1.1.0", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "private": "~0.1.5", + "recast": "0.10.33", + "through": "~2.3.8" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=", + "dev": true + } + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", + "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=", + "dev": true, + "requires": { + "esprima": "^2.6.0", + "recast": "^0.10.10", + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", + "dev": true + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "semantic-ui-react": { + "version": "0.67.2", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.67.2.tgz", + "integrity": "sha1-MMEnEjn65ySpYRfOoIe/MIT4SA4=", + "requires": { + "babel-runtime": "^6.22.0", + "classnames": "^2.1.5", + "debug": "^2.6.3", + "lodash": "^4.17.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", + "dev": true + }, + "shallowequal": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", + "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=", + "requires": { + "lodash.keys": "^3.1.2" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-fmt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=", + "dev": true + }, + "simple-is": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=", + "dev": true + }, + "sinon": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", + "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", + "dev": true, + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": ">=0.10.3 <1" + } + }, + "sinon-chai": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", + "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "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": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemapped-stacktrace": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.11.tgz", + "integrity": "sha512-O0pcWjJqzQFVsisPlPXuNawJHHg9N9UgpJ/aDmvi9+vnS3x1C0NhwkVFzzZ1VN0Xo+bekyweoqYvBw5ZBKiNnQ==", + "dev": true, + "requires": { + "source-map": "0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", + "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-cache": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", + "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", + "dev": true + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringmap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=", + "dev": true + }, + "stringset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "tether": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.7.tgz", + "integrity": "sha512-Z0J1aExjoFU8pybVkQAo/vD2wfSO63r+XOPfWQMC5qtf1bI7IWqNk4MiyBcgvvnY8kqnY06dVdvwTK2S3PU/Fw==" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "time-stamp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", + "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "try-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=", + "dev": true + }, + "tryor": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" + }, + "uglify-js": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", + "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", + "dev": true, + "optional": true, + "requires": { + "async": "~0.2.6", + "optimist": "~0.3.5", + "source-map": "~0.1.7" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true, + "optional": true + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true, + "optional": true, + "requires": { + "wordwrap": "~0.0.2" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "unicons": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/unicons/-/unicons-0.0.3.tgz", + "integrity": "sha1-bmp6Gm6uuwHKPYsSrZaHJ56rpSQ=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.1.tgz", + "integrity": "sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "object.entries": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", + "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "dev": true, + "requires": { + "async": "^0.9.0", + "chokidar": "^1.0.0", + "graceful-fs": "^4.1.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "webpack": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", + "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", + "dev": true, + "requires": { + "acorn": "^3.0.0", + "async": "^1.3.0", + "clone": "^1.0.2", + "enhanced-resolve": "~0.9.0", + "interpret": "^0.6.4", + "loader-utils": "^0.2.11", + "memory-fs": "~0.3.0", + "mkdirp": "~0.5.0", + "node-libs-browser": "^0.7.0", + "optimist": "~0.6.0", + "supports-color": "^3.1.0", + "tapable": "~0.1.8", + "uglify-js": "~2.7.3", + "watchpack": "^0.2.1", + "webpack-core": "~0.6.9" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "interpret": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "dev": true + }, + "memory-fs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "~0.2.6", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "webpack-bundle-tracker": { + "version": "0.0.93", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.0.93.tgz", + "integrity": "sha1-+gs3ZMJU8mawXaxBgHY7bc5MXLk=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1", + "strip-ansi": "^2.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=", + "dev": true + }, + "strip-ansi": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "integrity": "sha1-32LBqpTtLxFOHQ8h/R1QSCt5pg4=", + "dev": true, + "requires": { + "ansi-regex": "^1.0.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^1.5.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "1.16.5", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz", + "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=", + "dev": true, + "requires": { + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "express": "^4.13.3", + "http-proxy-middleware": "~0.17.1", + "open": "0.0.5", + "optimist": "~0.6.1", + "serve-index": "^1.7.2", + "sockjs": "^0.3.15", + "sockjs-client": "^1.0.3", + "stream-cache": "~0.0.1", + "strip-ansi": "^3.0.0", + "supports-color": "^3.1.1", + "webpack-dev-middleware": "^1.10.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.5.3" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", + "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", + "dev": true, + "requires": { + "camelcase": "^1.2.1", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/requirements.txt b/requirements.txt old mode 100755 new mode 100644 index 46dd30d..b09af25 --- a/requirements.txt +++ b/requirements.txt @@ -1,16 +1,16 @@ -appdirs==1.4.0 -Django==1.10.5 -django-webpack-loader==0.4.1 -djangorestframework==3.5.4 -packaging==16.8 -psycopg2==2.6.2 -pyparsing==2.1.10 -six==1.10.0 -gunicorn -django-nose==1.4.4 -coverage -django-rest-swagger -django-silk==1.0.0 -requests -requests-mock==1.3.0 -django-filter==1.1.0 +appdirs==1.4.0 +Django==1.11.17 +django-webpack-loader==0.4.1 +djangorestframework==3.5.4 +packaging==16.8 +psycopg2-binary==2.8.3 +pyparsing==2.1.10 +six==1.10.0 +gunicorn +django-nose +coverage +django-rest-swagger +django-silk +requests +requests-mock +django-filter==1.1.0 -- GitLab From ef66ae2f2a279692c356b5e0f80d10c26222195d Mon Sep 17 00:00:00 2001 From: Muhammad Ilham Peruzzi Date: Sat, 5 Oct 2019 23:13:42 +0700 Subject: [PATCH 010/140] change open_time value because there is bug in newer python and change closed_time value to use timezone module instead --- core/tests/test_vacancies.py | 45 +++++++------- core/views/vacancies.py | 111 ++++++++++++++++++++++++----------- 2 files changed, 100 insertions(+), 56 deletions(-) diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 1667ac1..d8c654f 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -1,4 +1,5 @@ from datetime import datetime +from django.utils import timezone import requests_mock from django.contrib.auth.models import User @@ -70,8 +71,8 @@ class ApplicationTests(APITestCase): new_user = User.objects.create_user('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, address=None) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) url = '/api/students/' + str(student_id) + '/applied-vacancies/' response = self.client.post(url, {'vacancy_id': new_vacancy.pk, 'cover_letter': 'this is a cover letter.'}, @@ -144,8 +145,8 @@ class BookmarkApplicationTests(APITestCase): new_user = User.objects.create_user('dummy.company2', 'dummy.compan2y@company.com', 'lalala123') new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, address=None) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) url = '/api/students/' + str(student_id) + '/bookmarked-vacancies/' response = self.client.post(url, {'vacancy_id': new_vacancy.pk}, format='json') @@ -253,8 +254,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") self.client.force_authenticate(new_user) @@ -271,8 +272,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.student', 'dummy.company3@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") new_user3 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') @@ -293,8 +294,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.student', 'dummy.company3@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") new_user3 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') @@ -315,8 +316,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") self.client.force_authenticate(new_user) @@ -333,8 +334,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") self.client.force_authenticate(new_user) @@ -352,8 +353,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") self.client.force_authenticate(new_user) @@ -371,8 +372,8 @@ class CompanyListsTests(APITestCase): new_user2 = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') new_student = Student.objects.create(user=new_user2, npm=1234123412) - new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) new_app = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") self.client.force_authenticate(new_user) @@ -410,8 +411,8 @@ class SupervisorApprovalTests(APITestCase): new_user2 = User.objects.create_user('dummy.company2', 'dummy.compan2y@company.com', 'lalala123') new_company2 = Company.objects.create(user=new_user2, description="lalala", status=Company.VERIFIED, logo=None, address=None) - new_vacancy2 = Vacancy.objects.create(company=new_company2, verified=False, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy2 = Vacancy.objects.create(company=new_company2, verified=False, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) url = '/api/vacancies/' + str(new_vacancy2.pk) + '/verify/' response = self.client.patch(url, {'verified': True}, format='json') @@ -426,8 +427,8 @@ class SupervisorApprovalTests(APITestCase): address=None) self.client.force_authenticate(user=new_user) - new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), - description="lalala", close_time=datetime.today()) + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(1541319300.0), + description="lalala", close_time=timezone.now()) url = '/api/vacancies/' + str(new_vacancy.pk) + '/verify/' response = self.client.patch(url, format='json') diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 39f7422..56165ca 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -187,6 +187,11 @@ class StudentApplicationViewSet(viewsets.GenericViewSet): application.delete() return Response(ApplicationSerializer(application, context={'request': request}).data) +class StatusError(Exception): + pass + +class UnauthorizeError(Exception): + pass class CompanyApplicationViewSet(viewsets.GenericViewSet): queryset = Application.objects.all() @@ -198,18 +203,25 @@ class CompanyApplicationViewSet(viewsets.GenericViewSet): Get list of company {company_id}'s applications --- """ - company = get_object_or_404(Company.objects.all(), pk=company_id) - if not request.user.is_superuser and request.user != company.user: + try: + company = self.__get_company_list_by_company_id(request, company_id) + vacancies = self.__get_vacancy_list_filter_by_company(company) + applications = self.__get_application_list_filter_by_vacancies(vacancies) + st = self.__get_status_from_request_param(request) + if st is not None: + st = int(st) + self.__validating_application_status(st) + applications = applications.filter(status=st) + page = self.paginate_queryset(applications) + if page is not None: + return self.get_paginated_response( + ApplicationSerializer(page, many=True, context={'request': request}).data) + return Response(ApplicationSerializer(applications, many=True, context={'request': request}).data) + except UnauthorizeError: return Response({"error": "forbidden"}, status=status.HTTP_403_FORBIDDEN) - vacancies = Vacancy.objects.filter(company=company) - applications = Application.objects.filter(vacancy__in=vacancies) - if 'status' in request.query_params: - applications = applications.filter(status=request.query_params['status']) - page = self.paginate_queryset(applications) - if page is not None: - return self.get_paginated_response( - ApplicationSerializer(page, many=True, context={'request': request}).data) - return Response(ApplicationSerializer(applications, many=True, context={'request': request}).data) + except (StatusError, ValueError): + return Response({"error": "status must be an integer between 0 and 4"}, \ + status=status.HTTP_400_BAD_REQUEST) @detail_route(methods=["get"]) def by_vacancy(self, request, company_id, pk=None): @@ -217,32 +229,63 @@ class CompanyApplicationViewSet(viewsets.GenericViewSet): Get list of company {company_id}'s applications by vacancy {id} --- """ - if pk is None: - return list(self, request, company_id) - company = get_object_or_404(Company.objects.all().order_by('-updated'), pk=company_id) - if not request.user.is_superuser and request.user != company.user: - return Response({"error": "forbidden"}, status=status.HTTP_403_FORBIDDEN) - vacancy = get_object_or_404(Vacancy.objects.all(), pk=pk) - if vacancy.company != company: - return Response({"error": "forbidden"}, status=status.HTTP_403_FORBIDDEN) - applications = Application.objects.filter(vacancy=vacancy) - st = request.query_params.get('status', None) - if st is not None: - try: + try: + if pk is None: + return list(self, request, company_id) + company = self.__get_company_list_by_company_id(request, company_id) + vacancy = self.__get_vacancy_list_by_pk(pk, company) + applications = self.__get_aplication_by_vacancy(vacancy) + st = self.__get_status_from_request_param(request) + if st is not None: st = int(st) - if st < 0 or st > 4: - return Response({"error": "status must be an integer between 0 and 4"}, - status=status.HTTP_400_BAD_REQUEST) + self.__validating_application_status(st) applications = applications.filter(status=st) - except: - return Response({"error": "status must be an integer between 0 and 4"}, \ - status=status.HTTP_400_BAD_REQUEST) - page = self.paginate_queryset(applications) - if page is not None: - return self.get_paginated_response( - ApplicationSerializer(page, many=True, context={'request': request}).data) - return Response(ApplicationSerializer(applications, many=True, context={'request': request}).data) + page = self.paginate_queryset(applications) + if page is not None: + return self.get_paginated_response( + ApplicationSerializer(page, many=True, context={'request': request}).data) + return Response(ApplicationSerializer(applications, many=True, context={'request': request}).data) + except UnauthorizeError: + return Response({"error": "forbidden"}, status=status.HTTP_403_FORBIDDEN) + except (StatusError, ValueError): + return Response({"error": "status must be an integer between 0 and 4"}, \ + status=status.HTTP_400_BAD_REQUEST) + def __get_company_list_by_company_id(self, request, company_id): + company = get_object_or_404(Company.objects.all().order_by('-updated'), pk=company_id) + if not self.__validating_user(request, company): + raise UnauthorizeError + return company + + def __validating_user(self, request, company): + return request.user.is_superuser or request.user == company.user + + def __get_vacancy_list_by_pk(self, pk, company): + vacancy = get_object_or_404(Vacancy.objects.all(), pk=pk) + if not self.__validating_vacancy(vacancy, company): + raise UnauthorizeError + return vacancy + + def __validating_vacancy(self, vacancy, company): + return vacancy.company == company + + def __get_vacancy_list_filter_by_company(self, company): + return Vacancy.objects.filter(company=company) + + def __get_application_list_filter_by_vacancies(self, vacancies): + return Application.objects.filter(vacancy__in=vacancies) + + def __get_aplication_by_vacancy(self, vacancy): + return Application.objects.filter(vacancy=vacancy) + + def __get_status_from_request_param(self, request): + return request.query_params.get('status', None) + + def __validating_application_status(self, status): + list_status = {0 : "NEW", 1 : "READ", 2 : "BOOKMARKED", 3 : "REJECTED", 4: "ACCEPTED"} + if status not in list_status: + raise StatusError + return True class CompanyVacanciesViewSet(viewsets.GenericViewSet): queryset = Vacancy.objects.all() -- GitLab From 4c82b1b6470efab08eb5565c934ceef322950fb7 Mon Sep 17 00:00:00 2001 From: Fajrin Kingwijati Date: Sun, 6 Oct 2019 00:30:41 +0700 Subject: [PATCH 011/140] Merge branch '1606837631-hotfix-migrations_conflict' of gitlab.cs.ui.ac.id:pmpl/class-project/kape into 1606837631-hotfix-migrations_conflict --- core/migrations/0015_merge_20191005_1926.py | 16 ++++++++++++++++ core/migrations/0016_merge_20191005_2235.py | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 core/migrations/0015_merge_20191005_1926.py create mode 100644 core/migrations/0016_merge_20191005_2235.py diff --git a/core/migrations/0015_merge_20191005_1926.py b/core/migrations/0015_merge_20191005_1926.py new file mode 100644 index 0000000..ae7f6c5 --- /dev/null +++ b/core/migrations/0015_merge_20191005_1926.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 12:26 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0014_feedback'), + ('core', '0014_company_category'), + ] + + operations = [ + ] diff --git a/core/migrations/0016_merge_20191005_2235.py b/core/migrations/0016_merge_20191005_2235.py new file mode 100644 index 0000000..eb0946c --- /dev/null +++ b/core/migrations/0016_merge_20191005_2235.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 15:35 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0015_merge_20191005_1926'), + ('core', '0015_merge_20191005_1957'), + ] + + operations = [ + ] -- GitLab From 3e2bed982cf45edfea95a92efdee91084a20133a Mon Sep 17 00:00:00 2001 From: Muhammad At Thoriq Date: Sun, 6 Oct 2019 03:30:36 +0700 Subject: [PATCH 012/140] Merge branch 'master' into '1606918484-03' # Conflicts: # kape/urls.py --- core/migrations/0015_merge_20191005_2038.py | 16 ++++ core/migrations/0017_merge_20191006_0134.py | 16 ++++ core/models/vacancies.py | 1 + core/serializers/vacancies.py | 2 +- core/tests/test_vacancies.py | 93 +++++++++++++++++++++ core/views/vacancies.py | 20 +++++ kape/urls.py | 3 +- 7 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 core/migrations/0015_merge_20191005_2038.py create mode 100644 core/migrations/0017_merge_20191006_0134.py diff --git a/core/migrations/0015_merge_20191005_2038.py b/core/migrations/0015_merge_20191005_2038.py new file mode 100644 index 0000000..d4afc1b --- /dev/null +++ b/core/migrations/0015_merge_20191005_2038.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 13:38 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0014_feedback'), + ('core', '0014_company_category'), + ] + + operations = [ + ] diff --git a/core/migrations/0017_merge_20191006_0134.py b/core/migrations/0017_merge_20191006_0134.py new file mode 100644 index 0000000..d41f21a --- /dev/null +++ b/core/migrations/0017_merge_20191006_0134.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 18:34 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0015_merge_20191005_2038'), + ('core', '0016_merge_20191005_2235'), + ] + + operations = [ + ] diff --git a/core/models/vacancies.py b/core/models/vacancies.py index f2b5dc4..8968e62 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -23,6 +23,7 @@ class Application(models.Model): BOOKMARKED = 2 REJECTED = 3 ACCEPTED = 4 + ABORTED = 5 cover_letter = models.TextField(null=True, blank=True) student = models.ForeignKey(Student, on_delete=models.CASCADE) diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index 313f206..a2bd2e4 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -61,7 +61,7 @@ class ApplicationStatusSerializer(serializers.ModelSerializer): class SupervisorStudentApplicationSerializer(serializers.ModelSerializer): def to_representation(self, instance): - status_map = ["new", "read", "bookmarked", "rejected", "accepted" ] + status_map = ["new", "read", "bookmarked", "rejected", "accepted","aborted" ] return { 'name' : instance.student.full_name, 'npm' : instance.student.npm, diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index d8c654f..f6ab793 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -1,6 +1,7 @@ from datetime import datetime from django.utils import timezone +import json import requests_mock from django.contrib.auth.models import User from rest_framework import status @@ -434,3 +435,95 @@ class SupervisorApprovalTests(APITestCase): response = self.client.patch(url, format='json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(new_vacancy.verified, False) + +class AcceptOneOfferTests(APITestCase): + + def generateObject(self): + new_user = User.objects.create_user('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + + new_user2 = User.objects.create_user('dummy.company2', 'dummy.company2@company.com', 'lalala123') + new_company2 = Company.objects.create(user=new_user2, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today()) + + new_vacancy2 = Vacancy.objects.create(company=new_company2, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today()) + + new_user3 = User.objects.create_user('dummy.student', 'dummy.student@company.com', 'lalala123') + new_student = Student.objects.create(user=new_user3, npm=1234123412) + + return new_user3, new_vacancy, new_vacancy2, new_student + + def test_number_of_content_response_object_given_id_auth(self): + + new_user3, new_vacancy, new_vacancy2, new_student = self.generateObject() + + self.client.force_authenticate(new_user3) + + Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") + Application.objects.create(student=new_student, vacancy=new_vacancy2, cover_letter="asdasdasd") + + url = '/api/acceptoffer/' + str(new_student.pk) + '/vacancy/' + str(new_vacancy.pk) + '/' + + response = self.client.patch(url, format='json') + body = json.loads(response.content) + + status_response = [] + for app in body: + status_response.append(app['status']) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertTrue(len(body) >= 2) + self.assertFalse(len(body) == 0) + self.assertTrue('new' in status_response) + self.assertTrue('aborted' in status_response) + + def test_student_not_exist_given_auth(self): + new_user3,new_vacancy, new_vacancy2, new_student = self.generateObject() + + self.client.force_authenticate(new_user3) + + user4 = User.objects.create_user('student_user_4', 'student_user_4@company.com', 'lalala123') + other_student = Student.objects.create(user=user4, npm=1098765432) + + Application.objects.create(student=other_student, vacancy=new_vacancy, cover_letter="asdasdasd") + Application.objects.create(student=other_student, vacancy=new_vacancy2, cover_letter="asdasdasd") + + url = '/api/acceptoffer/' + str(new_student.pk) + '/vacancy/' + str(new_vacancy.pk) + '/' + + response = self.client.patch(url, format='json') + body = json.loads(response.content) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertTrue(len(body) == 0) + + def test_type_error_if_input_null(self): + new_user3, new_vacancy, new_vacancy2, new_student = self.generateObject() + + self.client.force_authenticate(new_user3) + + Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") + Application.objects.create(student=new_student, vacancy=new_vacancy2, cover_letter="asdasdasd") + + with self.assertRaises(TypeError): + url = '/api/acceptoffer/' + None + '/vacancy/' + str(new_vacancy.pk) + '/' + + with self.assertRaises(TypeError): + url = '/api/acceptoffer/' + str(new_student.pk) + '/vacancy/' + None + '/' + + def test_if_requester_is_not_authenticated(self): + new_user3, new_vacancy, new_vacancy2, new_student = self.generateObject() + + Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="asdasdasd") + Application.objects.create(student=new_student, vacancy=new_vacancy2, cover_letter="asdasdasd") + + url = '/api/acceptoffer/' + str(new_student.pk) + '/vacancy/' + str(new_vacancy.pk) + '/' + + response = self.client.patch(url, format='json') + body = json.loads(response.content) + + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 56165ca..2f80513 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -350,3 +350,23 @@ class BookmarkedVacancyByStudentViewSet(viewsets.GenericViewSet): student.bookmarked_vacancies.remove(vacancy) return Response( self.serializer_class(student.bookmarked_vacancies, many=True, context={'request': request}).data) + +class AcceptOfferByStudentViewSet(MultiSerializerViewSetMixin, viewsets.GenericViewSet): + queryset = Application.objects.all() + permission_classes = [IsAdminOrStudent] + + def partial_update(self, request, student_id, pk=None): + """ + Get list of a student {student_id}'s cancel offered vacancies + --- + """ + student = get_object_or_404(Student.objects.all().order_by('-updated'), pk=student_id) + apps = Application.objects.filter(student=student) + + for a in apps: + if a.vacancy_id != int(pk): + serializer = ApplicationStatusSerializer(a, data={'status': 5}, partial=True) + if serializer.is_valid(): + serializer.save() + + return Response(SupervisorStudentApplicationSerializer(apps, many=True, context={'request': request}).data) \ No newline at end of file diff --git a/kape/urls.py b/kape/urls.py index 5ae9c07..ade154c 100755 --- a/kape/urls.py +++ b/kape/urls.py @@ -25,7 +25,7 @@ from core import apps from core.views.accounts import StudentViewSet, CompanyViewSet, SupervisorViewSet, UserViewSet, LoginViewSet, \ CompanyRegisterViewSet from core.views.vacancies import VacancyViewSet, BookmarkedVacancyByStudentViewSet, StudentApplicationViewSet, \ - CompanyApplicationViewSet, CompanyVacanciesViewSet, ApplicationViewSet + CompanyApplicationViewSet, CompanyVacanciesViewSet, ApplicationViewSet, AcceptOfferByStudentViewSet from core.views.feedbacks import FeedbackViewSet schema_view = get_swagger_view() @@ -40,6 +40,7 @@ router.register(r'vacancies', VacancyViewSet) router.register(r'applications', ApplicationViewSet) router.register(r'feedbacks', FeedbackViewSet) # router.register(r'students/(?P\d+)/profile', StudentProfileViewSet) +router.register(r'acceptoffer/(?P\d+)/vacancy', AcceptOfferByStudentViewSet) router.register(r'students/(?P\d+)/bookmarked-vacancies', BookmarkedVacancyByStudentViewSet, base_name='bookmarked-vacancy-list') router.register(r'students/(?P\d+)/applied-vacancies', StudentApplicationViewSet, -- GitLab From 715950317fbdb5ec072752d57b42750b440eabcd Mon Sep 17 00:00:00 2001 From: Aldo Bima Syahputra Date: Sun, 6 Oct 2019 06:36:54 +0700 Subject: [PATCH 013/140] 1606833463 31 (Menambah Atribut alamat LinkedIn pada profile mahasiswa) --- assets/js/ProfilePage.jsx | 19 ++++++++++++++++++- assets/js/__test__/ProfilePage-test.jsx | 2 +- core/migrations/0014_student_linkedin_url.py | 20 ++++++++++++++++++++ core/migrations/0016_merge_20191005_2256.py | 16 ++++++++++++++++ core/migrations/0018_merge_20191006_0603.py | 16 ++++++++++++++++ core/models/accounts.py | 1 + core/serializers/accounts.py | 8 +++++--- core/tests/test_accounts.py | 8 ++++++++ 8 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 core/migrations/0014_student_linkedin_url.py create mode 100644 core/migrations/0016_merge_20191005_2256.py create mode 100644 core/migrations/0018_merge_20191006_0603.py diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index 3b130dd..11a3fc8 100644 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -42,6 +42,7 @@ export default class ProfilePage extends React.Component { acceptedNo: 0, refresh: 1, loading: false, + linkedin_url: '', }; this.getProfile = this.getProfile.bind(this); this.handleChange = this.handleChange.bind(this); @@ -74,6 +75,7 @@ export default class ProfilePage extends React.Component { acceptedNo: data.accepted_no, bagikanTranskrip: data.show_transcript, refresh: this.state.refresh + 1, + linkedin_url: data.linkedin_url, }); if (this.props.route.own) { const newSession = this.props.user.data; @@ -157,10 +159,15 @@ export default class ProfilePage extends React.Component {
+ + + + + @@ -248,7 +255,18 @@ export default class ProfilePage extends React.Component { + + + + + + { this.state.linkedin_url || 'N/A' } + + + + + @@ -258,7 +276,6 @@ export default class ProfilePage extends React.Component { -
diff --git a/assets/js/__test__/ProfilePage-test.jsx b/assets/js/__test__/ProfilePage-test.jsx index 1adcf18..77b9c51 100644 --- a/assets/js/__test__/ProfilePage-test.jsx +++ b/assets/js/__test__/ProfilePage-test.jsx @@ -139,7 +139,7 @@ describe('ProfilePage', () => { const profile = ReactTestUtils.renderIntoDocument( ); - const checkboxNode = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[5]; + const checkboxNode = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[6]; const checkbox = false; checkboxNode.value = checkbox; profile.getProfile().then(()=> expect(profile.state.show_transcript).to.equal(true)); diff --git a/core/migrations/0014_student_linkedin_url.py b/core/migrations/0014_student_linkedin_url.py new file mode 100644 index 0000000..b4bbeae --- /dev/null +++ b/core/migrations/0014_student_linkedin_url.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 08:48 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0013_auto_20170602_1130'), + ] + + operations = [ + migrations.AddField( + model_name='student', + name='linkedin_url', + field=models.URLField(blank=True, null=True), + ), + ] diff --git a/core/migrations/0016_merge_20191005_2256.py b/core/migrations/0016_merge_20191005_2256.py new file mode 100644 index 0000000..e8b0c6b --- /dev/null +++ b/core/migrations/0016_merge_20191005_2256.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 15:56 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0015_merge_20191005_1957'), + ('core', '0014_student_linkedin_url'), + ] + + operations = [ + ] diff --git a/core/migrations/0018_merge_20191006_0603.py b/core/migrations/0018_merge_20191006_0603.py new file mode 100644 index 0000000..f3a0c37 --- /dev/null +++ b/core/migrations/0018_merge_20191006_0603.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 23:03 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0016_merge_20191005_2256'), + ('core', '0017_merge_20191006_0134'), + ] + + operations = [ + ] diff --git a/core/models/accounts.py b/core/models/accounts.py index a118168..cf67771 100644 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -65,6 +65,7 @@ class Student(models.Model): batch = models.CharField(max_length=4, blank=True, null=True) show_transcript = models.BooleanField(default=False) photo = models.FileField(upload_to=get_student_photo_file_path, null=True, blank=True, validators=[validate_image_file_extension]) + linkedin_url = models.URLField(max_length=200,blank=True, null=True) region = models.CharField(max_length=30, blank=True, null=True) @property diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py index 5f3e8d1..3dc36c2 100644 --- a/core/serializers/accounts.py +++ b/core/serializers/accounts.py @@ -19,7 +19,7 @@ class StudentSerializer(serializers.ModelSerializer): class Meta: model = Student fields = ['id', 'name', 'user', 'npm', 'resume', 'phone_number', 'birth_place', 'birth_date', 'major', 'batch', \ - 'show_transcript', 'photo', 'accepted_no', 'region'] + 'show_transcript', 'photo', 'accepted_no', 'linkedin_url', 'region'] def get_accepted_no(self, obj): apps = Application.objects.filter(student=obj, status=4) @@ -43,7 +43,8 @@ class StudentUpdateSerializer(serializers.ModelSerializer): 'phone_number': instance.phone_number, 'region': instance.region, 'photo': photo, - 'show_transcript': instance.show_transcript + 'show_transcript': instance.show_transcript, + 'linkedin_url' : instance.linkedin_url, } def update(self, instance, validated_data): @@ -53,13 +54,14 @@ class StudentUpdateSerializer(serializers.ModelSerializer): instance.region = validated_data.get('region', instance.region) instance.photo = validated_data.get('photo', instance.photo) instance.user.email = validated_data.get('email', instance.user.email) + instance.linkedin_url = validated_data.get('linkedin_url', instance.linkedin_url) instance.save() instance.user.save() return instance class Meta: model = Student - fields = ['resume', 'email', 'phone_number', 'region', 'photo', 'show_transcript'] + fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript', 'linkedin_url', 'region'] class CompanyUpdateSerializer(serializers.ModelSerializer): diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index d1ee00d..22c9dc7 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -137,6 +137,10 @@ class ProfileUpdateTests(APITestCase): self.assertEqual(response.data.get('phone_number'), '08123123123') url = '/api/students/' + str(student_id) + "/profile/" + response = self.client.patch(url, {'linkedin_url': 'https://www.linkedin.com/in/jojo/'}, format='multipart') + self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) + self.assertEqual(response.data.get('linkedin_url'), 'https://www.linkedin.com/in/jojo/') + response = self.client.patch(url, {'region': 'Indonesia'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) self.assertEqual(response.data.get('region'), 'Indonesia') @@ -149,6 +153,10 @@ class ProfileUpdateTests(APITestCase): response = self.client.patch(url, {'phone_number': '08123123123'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + url = '/api/students/' + str(student_id) + "/profile/" + response = self.client.patch(url, {'linkedin_url': 'this is not valid url'}, format='multipart') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + new_user = User.objects.create_user('dummy.student2', 'dummy.student@student.com', 'lalala123') new_student = Student.objects.create(user=new_user, npm="1212121212") -- GitLab From b5b558fcea048c57f1111bec0aa7fb144a144476 Mon Sep 17 00:00:00 2001 From: HANIF AGUNG PRAYOGA Date: Sun, 6 Oct 2019 09:22:20 +0700 Subject: [PATCH 014/140] 1606884344 58 --- assets/js/ProfilePage.jsx | 21 +++++++++++++++++++++ core/migrations/0018_student_intro.py | 20 ++++++++++++++++++++ core/migrations/0019_merge_20191006_0852.py | 16 ++++++++++++++++ core/models/accounts.py | 2 ++ core/serializers/accounts.py | 6 ++++-- core/tests/test_accounts.py | 5 +++++ 6 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 core/migrations/0018_student_intro.py create mode 100644 core/migrations/0019_merge_20191006_0852.py diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index 11a3fc8..a2d40e7 100644 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -30,6 +30,7 @@ export default class ProfilePage extends React.Component { phone_number: '', show_transcript: '', photo: '', + intro: '', form: { picture: '', email: '', @@ -37,6 +38,7 @@ export default class ProfilePage extends React.Component { region: '', resume: '', show_transcript: '', + intro: '', }, bagikanTranskrip: '', acceptedNo: 0, @@ -75,6 +77,7 @@ export default class ProfilePage extends React.Component { acceptedNo: data.accepted_no, bagikanTranskrip: data.show_transcript, refresh: this.state.refresh + 1, + intro: data.intro, linkedin_url: data.linkedin_url, }); if (this.props.route.own) { @@ -172,6 +175,10 @@ export default class ProfilePage extends React.Component { + + + + + + + + +

Intro

+
+ +

{ this.state.intro || 'N/A' }

+
+
+
+ + +
diff --git a/core/migrations/0018_student_intro.py b/core/migrations/0018_student_intro.py new file mode 100644 index 0000000..fa1b78c --- /dev/null +++ b/core/migrations/0018_student_intro.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-05 22:59 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0017_merge_20191006_0134'), + ] + + operations = [ + migrations.AddField( + model_name='student', + name='intro', + field=models.CharField(blank=True, max_length=50, null=True), + ), + ] diff --git a/core/migrations/0019_merge_20191006_0852.py b/core/migrations/0019_merge_20191006_0852.py new file mode 100644 index 0000000..38ac5fa --- /dev/null +++ b/core/migrations/0019_merge_20191006_0852.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-06 01:52 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0018_student_intro'), + ('core', '0018_merge_20191006_0603'), + ] + + operations = [ + ] diff --git a/core/models/accounts.py b/core/models/accounts.py index cf67771..2ada280 100644 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -67,6 +67,8 @@ class Student(models.Model): photo = models.FileField(upload_to=get_student_photo_file_path, null=True, blank=True, validators=[validate_image_file_extension]) linkedin_url = models.URLField(max_length=200,blank=True, null=True) region = models.CharField(max_length=30, blank=True, null=True) + + intro = models.CharField(max_length=50, blank=True, null=True) @property def name(self): diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py index 3dc36c2..bc52f31 100644 --- a/core/serializers/accounts.py +++ b/core/serializers/accounts.py @@ -19,7 +19,7 @@ class StudentSerializer(serializers.ModelSerializer): class Meta: model = Student fields = ['id', 'name', 'user', 'npm', 'resume', 'phone_number', 'birth_place', 'birth_date', 'major', 'batch', \ - 'show_transcript', 'photo', 'accepted_no', 'linkedin_url', 'region'] + 'show_transcript', 'photo', 'accepted_no', 'linkedin_url', 'region', 'intro'] def get_accepted_no(self, obj): apps = Application.objects.filter(student=obj, status=4) @@ -44,6 +44,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): 'region': instance.region, 'photo': photo, 'show_transcript': instance.show_transcript, + 'intro': instance.intro, 'linkedin_url' : instance.linkedin_url, } @@ -54,6 +55,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): instance.region = validated_data.get('region', instance.region) instance.photo = validated_data.get('photo', instance.photo) instance.user.email = validated_data.get('email', instance.user.email) + instance.intro = validated_data.get('intro', instance.intro) instance.linkedin_url = validated_data.get('linkedin_url', instance.linkedin_url) instance.save() instance.user.save() @@ -61,7 +63,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): class Meta: model = Student - fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript', 'linkedin_url', 'region'] + fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript', 'linkedin_url', 'region', 'intro'] class CompanyUpdateSerializer(serializers.ModelSerializer): diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index 22c9dc7..d606b62 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -163,3 +163,8 @@ class ProfileUpdateTests(APITestCase): url = '/api/students/' + str(new_student.pk) + "/profile/" response = self.client.patch(url, {'phone_number': '08123123123'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + url = '/api/students/' + str(student_id) + '/profile/' + response = self.client.patch(url, {'intro': 'Saya tertarik dengan dunia front-end development'}, format='multipart') + self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) + self.assertEqual(response.data.get('intro'), 'Saya tertarik dengan dunia front-end development') -- GitLab From c264ce23a55760b4ce41d3412d22af9f26e8f3f6 Mon Sep 17 00:00:00 2001 From: Kianutama Radianur Date: Sun, 6 Oct 2019 09:45:21 +0700 Subject: [PATCH 015/140] Add test to count the sum of person who already register to a vacancy --- core/tests/test_vacancies.py | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 1667ac1..f856e48 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -82,6 +82,49 @@ class ApplicationTests(APITestCase): response = self.client.delete(url) self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_count_application_a_person_is_already_register(self): + new_user = User.objects.create_user('dummy.company', 'dummy.company@company.com', 'lalala123') + new_user2 = User.objects.create_user('dummy.student', 'dummy.student@student.com', 'lalala123') + + self.client.force_authenticate(new_user) + self.client.force_authenticate(new_user2) + + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + new_student = Student.objects.create(user=new_user2, npm=1234123412) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today()) + + application = Application.objects.create(student=new_student, vacancy=new_vacancy, cover_letter="lorem ipsum") + + url = '/api/applications/' + str(new_vacancy.pk) + '/count/' + + response = self.client.get(url, format='json') + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.json()['count'], 1) + + def test_count_application_nobody_register(self): + new_user = User.objects.create_user('dummy.company', 'dummy.company@company.com', 'lalala123') + new_user2 = User.objects.create_user('dummy.student', 'dummy.student@student.com', 'lalala123') + + self.client.force_authenticate(new_user) + self.client.force_authenticate(new_user2) + + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + new_student = Student.objects.create(user=new_user2, npm=1234123412) + new_vacancy = Vacancy.objects.create(company=new_company, verified=True, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today()) + + url = '/api/applications/' + str(new_vacancy.pk) + '/count/' + + response = self.client.get(url, format='json') + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.json()['count'], 0) + class BookmarkApplicationTests(APITestCase): @requests_mock.Mocker() -- GitLab From 99eeb065ed3b37002a54694c44d9b86b05641193 Mon Sep 17 00:00:00 2001 From: ISNAINI NURUL KHASANAH Date: Sun, 6 Oct 2019 10:22:39 +0700 Subject: [PATCH 016/140] 1906336984 50 Menambahkan kolom major di halaman rekap pendaftaran --- assets/js/SupervisorPage.jsx | 1 + assets/js/components/ApplicationList.jsx | 3 ++- core/serializers/vacancies.py | 5 +++-- core/tests/test_vacancies.py | 9 +++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/assets/js/SupervisorPage.jsx b/assets/js/SupervisorPage.jsx index 3b9edbe..1aa981c 100644 --- a/assets/js/SupervisorPage.jsx +++ b/assets/js/SupervisorPage.jsx @@ -7,6 +7,7 @@ import ApplicationList from './components/ApplicationList'; const cols = [ { key: 'StudentName', label: 'Nama' }, { key: 'StudentID', label: 'NPM' }, + { key: 'Major', label: 'Major' }, { key: 'Perusahaan', label: 'Perusahaan' }, { key: 'Posisi', label: 'Posisi' }, { key: 'Status', label: 'Status' }, diff --git a/assets/js/components/ApplicationList.jsx b/assets/js/components/ApplicationList.jsx index bf2decb..6432a00 100644 --- a/assets/js/components/ApplicationList.jsx +++ b/assets/js/components/ApplicationList.jsx @@ -23,9 +23,10 @@ export default class ApplicationList extends React.Component { generateRows() { return this.props.items.map(item => ( - + {item.name} {item.npm} + {item.major} {item.company_name} diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index a2bd2e4..5938e5f 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -65,6 +65,7 @@ class SupervisorStudentApplicationSerializer(serializers.ModelSerializer): return { 'name' : instance.student.full_name, 'npm' : instance.student.npm, + 'major' : instance.student.major, 'vacancy_name' : instance.vacancy.name, 'company_name' : instance.vacancy.company.name, 'status' : status_map[instance.status] @@ -72,8 +73,8 @@ class SupervisorStudentApplicationSerializer(serializers.ModelSerializer): class Meta: model = Application - fields = ['name', 'npm', 'vacancy_name', 'company_name', 'status'] - read_only_fields = ['name', 'npm', 'vacancy_name', 'company_name', 'status'] + fields = ['name', 'npm', 'major', 'vacancy_name', 'company_name', 'status'] + read_only_fields = ['name', 'npm', 'major', 'vacancy_name', 'company_name', 'status'] class VacancyApplicationSerializer(serializers.ModelSerializer): vacancy = VacancySerializer() diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index f6ab793..62246e8 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -382,7 +382,16 @@ class CompanyListsTests(APITestCase): url = '/api/companies/' + str(new_company.pk) + '/applications/' + str(new_vacancy.pk) + '/by_vacancy/?status=5' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_company_application_list_with_major(self): + new_user = User.objects.create_user('dummy.company4', 'dummy.company4@company.com', 'lalala123') + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, address=None) + + self.client.force_authenticate(new_user) + url = '/api/companies/' + str(new_company.pk) + '/applications/?major=0' + response = self.client.get(url, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) class SupervisorStudentApplicationTests(APITestCase): def test_list_student_application(self): -- GitLab From 7aa7dae490409c288461a30d53edf342de3b90c3 Mon Sep 17 00:00:00 2001 From: Refo Ilmiya Akbar Date: Sun, 6 Oct 2019 11:06:48 +0700 Subject: [PATCH 017/140] 1606876033 12 --- core/migrations/0017_vacancy_amount.py | 20 ++++++++ core/models/vacancies.py | 1 + core/tests/test_create_vacancies.py | 66 +++++++++++++++++++++++++- core/views/vacancies.py | 16 +++++-- 4 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 core/migrations/0017_vacancy_amount.py diff --git a/core/migrations/0017_vacancy_amount.py b/core/migrations/0017_vacancy_amount.py new file mode 100644 index 0000000..e4c4c91 --- /dev/null +++ b/core/migrations/0017_vacancy_amount.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-05 19:35 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0016_merge_20191005_2235'), + ] + + operations = [ + migrations.AddField( + model_name='vacancy', + name='amount', + field=models.IntegerField(null=True), + ), + ] diff --git a/core/models/vacancies.py b/core/models/vacancies.py index 8968e62..bdb75cd 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -12,6 +12,7 @@ class Vacancy(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100, null=False) + amount = models.IntegerField(null=True) class Meta: ordering = ['-updated'] diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 3a8fd4a..9d8cd65 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -23,6 +23,21 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancies = Vacancy.objects.count() self.assertEqual(vacancies,1) + def test_new_vacancy_with_amount_success(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), + 'close_time': datetime.today(), 'name': 'new_vacancy', + 'description': 'new_vacancy ', 'amount': 10}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.amount, 10) + def test_new_vacancy_failed(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, @@ -37,6 +52,21 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancies = Vacancy.objects.count() self.assertEqual(vacancies,0) + def test_new_vacancy_with_amount_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), + 'close_time': datetime.today(), 'name': 'new_vacancy', + 'description': 'new_vacancy ', 'amount': 'sepuluh'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancies_count = Vacancy.objects.count() + self.assertEqual(vacancies_count, 0) + def test_update_vacancy_success(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, @@ -51,6 +81,23 @@ class CreateAndUpdateVacancyTest(APITestCase): 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_update_vacancy_with_amount_success(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 10}, format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.amount, 10) + def test_update_vacancy_failed(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, @@ -63,4 +110,21 @@ class CreateAndUpdateVacancyTest(APITestCase): url = '/api/vacancies/' + str(new_vacancy.pk) + '/' response = self.client.patch(url, {'open_time': datetime.today(), 'close_time': datetime.fromtimestamp(0), 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) \ No newline at end of file + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_update_vacancy_with_amount_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 'sepuluh'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancy = Vacancy.objects.first() + self.assertEqual(vacancy.amount, None) diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 2f80513..a5da9a9 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -57,6 +57,11 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) + if 'amount' in data: + if isinstance(data['amount'], int): + vacancy.amount = data['amount'] + else: + return Response(status=status.HTTP_400_BAD_REQUEST) vacancy.save() return Response(status=status.HTTP_200_OK) @@ -73,6 +78,11 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): vacancy.close_time = close_time vacancy.name = name vacancy.description = description + if 'amount' in data: + if isinstance(data['amount'], int): + vacancy.amount = data['amount'] + else: + return Response(status=status.HTTP_400_BAD_REQUEST) vacancy.save() return Response(status=status.HTTP_200_OK) @@ -255,11 +265,11 @@ class CompanyApplicationViewSet(viewsets.GenericViewSet): company = get_object_or_404(Company.objects.all().order_by('-updated'), pk=company_id) if not self.__validating_user(request, company): raise UnauthorizeError - return company + return company def __validating_user(self, request, company): return request.user.is_superuser or request.user == company.user - + def __get_vacancy_list_by_pk(self, pk, company): vacancy = get_object_or_404(Vacancy.objects.all(), pk=pk) if not self.__validating_vacancy(vacancy, company): @@ -280,7 +290,7 @@ class CompanyApplicationViewSet(viewsets.GenericViewSet): def __get_status_from_request_param(self, request): return request.query_params.get('status', None) - + def __validating_application_status(self, status): list_status = {0 : "NEW", 1 : "READ", 2 : "BOOKMARKED", 3 : "REJECTED", 4: "ACCEPTED"} if status not in list_status: -- GitLab From b9dba95daed74606897ab9b5420101b90ade4096 Mon Sep 17 00:00:00 2001 From: Kianutama Radianur Date: Sun, 6 Oct 2019 11:14:16 +0700 Subject: [PATCH 018/140] implememt count pendaftar from a vacancy --- assets/js/components/Vacancy.jsx | 11 ++++++++++- core/views/vacancies.py | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index a755cca..2372f4d 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -41,6 +41,7 @@ export default class Vacancy extends React.Component { deleteLoading: false, }; moment.locale('id'); + this.count(); this.bookmark = this.bookmark.bind(this); this.updateStatus = this.updateStatus.bind(this); this.generateAction = this.generateAction.bind(this); @@ -48,6 +49,13 @@ export default class Vacancy extends React.Component { this.removeVacancyApplication = this.removeVacancyApplication.bind(this); } + count() { + console.log('masuk kok'); + Server.get(`/applications/${this.props.data.id}/count/`, false).then((data) => { + this.setState({ count: data.count }); + }); + } + bookmark() { const data = { vacancy_id: this.props.data.id }; if (this.state.bookmarked < 1) { @@ -124,7 +132,8 @@ export default class Vacancy extends React.Component {

{ this.props.data.name }

{ this.props.data.company.name }
- { this.props.data.company.address }

+ { this.props.data.company.address }
+ { this.state.count } orang telah mendaftar!
{`Ditutup ${moment(moment(this.props.data.close_time)).fromNow()}`}
diff --git a/core/views/vacancies.py b/core/views/vacancies.py index e4b8b98..d3ea259 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -1,5 +1,6 @@ import requests from django.conf import settings +from django.db.models import Count from rest_framework import viewsets, status from rest_framework.decorators import detail_route from rest_framework.exceptions import ValidationError @@ -82,6 +83,11 @@ class ApplicationViewSet(MultiSerializerViewSetMixin, viewsets.GenericViewSet): serializer(applications, many=True, context={'request': request}).data) return Response(serializer(applications, many=True, context={'request': request}).data) + @detail_route(methods=['get'], permission_classes=[IsAdminOrStudent]) + def count(self, request, pk=None): + count = Application.objects.filter(vacancy_id=pk).count() + return Response({"count": count}, status=status.HTTP_200_OK) + def partial_update(self, request, pk=None): application = self.get_object() serializer = self.get_serializer_class()(application, data=request.data, partial=True) -- GitLab From 76ac1a74c847065648419a3a8e4dc53793b69b66 Mon Sep 17 00:00:00 2001 From: FARI QODRI ANDANA Date: Sun, 6 Oct 2019 13:52:27 +0700 Subject: [PATCH 019/140] 1606875964-23 Saring lowongan berdasarkan perusahaan --- core/tests/test_vacancies.py | 26 ++++++++++++++++++++++++++ core/views/vacancies.py | 3 +++ 2 files changed, 29 insertions(+) diff --git a/core/tests/test_vacancies.py b/core/tests/test_vacancies.py index 62246e8..70bcc64 100644 --- a/core/tests/test_vacancies.py +++ b/core/tests/test_vacancies.py @@ -9,6 +9,7 @@ from rest_framework.test import APITestCase from core.models.accounts import Company, Student, Supervisor from core.models.vacancies import Vacancy, Application +from core.serializers.vacancies import VacancySerializer class ApplicationTests(APITestCase): @@ -174,6 +175,31 @@ class VacancyTest(APITestCase): url = '/api/vacancies/?verified=false' response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_filter_vacancy_list_by_company_ids(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + self.client.force_authenticate(user=superuser) + + new_user = User.objects.create_user('dummy.company3', 'dummy.company3@company.com', 'lalala123') + new_company = Company.objects.create(user=new_user, description="lalala", status=Company.VERIFIED, logo=None, + address=None) + + new_user2 = User.objects.create_user('dummy.companyzxc', 'dummy.companyzxc@company.com', 'lalala123') + new_company2 = Company.objects.create(user=new_user2, description="lalalaasdsad", status=Company.VERIFIED, + logo=None, + address=None) + open_time = datetime(2019, 10, 20) + close_time = datetime(2019, 12, 20) + vacancy1 = Vacancy.objects.create(company=new_company, verified=True, open_time=open_time, + description='', close_time=close_time, name='vacancy1') + vacancy2 = Vacancy.objects.create(company=new_company2, verified=True, open_time=open_time, + description='', close_time=close_time, name='vacancy2') + url = '/api/vacancies/?company={}&company={}'.format(new_company.id, new_company2.id) + response = self.client.get(url, format='json') + vacancies = Vacancy.objects.filter(company__id__in=[new_company.id, new_company2.id]) + self.assertEqual(dict(response.data)['count'], Vacancy.objects.count()) + self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_fail_on_unverified_user_vacancy_list(self): url = '/api/vacancies/' diff --git a/core/views/vacancies.py b/core/views/vacancies.py index a5da9a9..f51cfd3 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -35,10 +35,13 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): def list(self, request, *args, **kwargs): vacancies = Vacancy.objects.all() verified = request.query_params['verified'] if 'verified' in request.query_params else "True" + companies = [int(x) for x in request.query_params.getlist('company', [])] if verified.lower() in ("yes", "true", "t", "1"): vacancies = vacancies.filter(verified=True) if verified.lower() in {"no", "false", "f", "0"}: vacancies = vacancies.filter(verified=False) + if len(companies) > 0: + vacancies = vacancies.filter(company__id__in=companies) page = self.paginate_queryset(vacancies) if page is not None: return self.get_paginated_response(VacancySerializer(page, many=True, context={'request': request}).data) -- GitLab From ae7b1d6b88a256815faac21868ec19bf09b0dea0 Mon Sep 17 00:00:00 2001 From: "regensa.tjahjanto" Date: Sun, 6 Oct 2019 14:28:51 +0700 Subject: [PATCH 020/140] added unit test for create vacancy --- core/tests/test_create_vacancies.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 9d8cd65..6c23cb3 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -128,3 +128,17 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, None) + + def test_create_vacancy_with_same_date_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.today(), + 'close_time': datetime.today(), 'name': 'new_vacancy', 'description': 'new_vacancy'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancies = Vacancy.objects.count() + self.assertEqual(vacancies,0) \ No newline at end of file -- GitLab From 79ae3176086bd8e4925696a8dfd3c0660a133d6a Mon Sep 17 00:00:00 2001 From: root Date: Sun, 6 Oct 2019 14:37:52 +0700 Subject: [PATCH 021/140] implementasi fitur and testing --- .../js/__test__/components/Vacancy-test.jsx | 5 ++- assets/js/components/Vacancy.jsx | 2 +- core/models/vacancies.py | 10 +++++- core/serializers/vacancies.py | 2 +- core/tests/__init__.py | 2 +- core/tests/test_vacancies.py | 33 +++++++++++++++++++ core/views/vacancies.py | 2 ++ 7 files changed, 51 insertions(+), 5 deletions(-) diff --git a/assets/js/__test__/components/Vacancy-test.jsx b/assets/js/__test__/components/Vacancy-test.jsx index 9f1e253..7a4d61b 100644 --- a/assets/js/__test__/components/Vacancy-test.jsx +++ b/assets/js/__test__/components/Vacancy-test.jsx @@ -8,6 +8,7 @@ describe('Vacancy', () => { const fetchMock = require('fetch-mock'); const response = { close_time: '2019-03-28T05:55:42Z', + apply_before: '28 March 2019' company: { address: 'kebayoran baru', id: 1, @@ -17,7 +18,7 @@ describe('Vacancy', () => { created: '2017-03-28T07:05:47.128672Z', description: 'Lorem ipsum dolbh.', id: 3, - name: 'Software Engineer', + name: 'Software Engineer', open_time: '2017-03-28T05:55:38Z', updated: '2017-03-28T07:34:13.122093Z', verified: true, @@ -25,6 +26,7 @@ describe('Vacancy', () => { const response2 = { close_time: '2019-03-28T05:55:42Z', + apply_before: '28 March 2019' company: { address: 'kebayoran baru', id: 1, @@ -44,6 +46,7 @@ describe('Vacancy', () => { role: 'company', data: { url: 'http://localhost:8001/api/users/8/', + username: 'Tutuplapak', email: '', is_staff: false, diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx index a755cca..11077dc 100644 --- a/assets/js/components/Vacancy.jsx +++ b/assets/js/components/Vacancy.jsx @@ -125,7 +125,7 @@ export default class Vacancy extends React.Component {

{ this.props.data.name }

{ this.props.data.company.name }
{ this.props.data.company.address }

- {`Ditutup ${moment(moment(this.props.data.close_time)).fromNow()}`} + {this.props.data.apply_before}
diff --git a/core/models/vacancies.py b/core/models/vacancies.py index f2b5dc4..44ddc83 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -1,7 +1,8 @@ from django.db import models from core.models.accounts import Company, Student - +import datetime +from django.utils import timezone class Vacancy(models.Model): company = models.ForeignKey(Company, related_name="vacancies", null=False) @@ -13,6 +14,12 @@ class Vacancy(models.Model): updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100, null=False) + @property + def apply_before(self): + if(self.close_time Date: Sun, 6 Oct 2019 14:52:05 +0700 Subject: [PATCH 022/140] finished implementing validation feature --- core/tests/test_create_vacancies.py | 24 +++++++++++++++++++++--- core/views/vacancies.py | 4 ++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 6c23cb3..8a06e56 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -135,10 +135,28 @@ class CreateAndUpdateVacancyTest(APITestCase): address=None) self.client.force_authenticate(user=superuser) + today = datetime.today() + url = '/api/vacancies/' - response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.today(), - 'close_time': datetime.today(), 'name': 'new_vacancy', 'description': 'new_vacancy'}, format='json') + response = self.client.post(url, {'company': new_company.pk, 'open_time': today, + 'close_time': today, 'name': 'new_vacancy', 'description': 'new_vacancy'}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) vacancies = Vacancy.objects.count() - self.assertEqual(vacancies,0) \ No newline at end of file + self.assertEqual(vacancies,0) + + def test_update_vacancy_with_same_date_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + today = datetime.today() + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': today, 'close_time': today, + 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/core/views/vacancies.py b/core/views/vacancies.py index a5da9a9..bbfdda9 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -56,6 +56,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + elif close_time == open_time: + raise ValidationError('Waktu tutup dan buka lowongan tidak boleh sama!') vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) if 'amount' in data: if isinstance(data['amount'], int): @@ -74,6 +76,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + elif close_time == open_time: + raise ValidationError('Waktu tutup dan buka lowongan tidak boleh sama!') vacancy.open_time = open_time vacancy.close_time = close_time vacancy.name = name -- GitLab From 7287930c28e51d26644ed6b7957c27b31b9e2913 Mon Sep 17 00:00:00 2001 From: "regensa.tjahjanto" Date: Sun, 6 Oct 2019 14:28:51 +0700 Subject: [PATCH 023/140] added unit test for create vacancy finished implementing validation feature --- core/tests/test_create_vacancies.py | 32 +++++++++++++++++++++++++++++ core/views/vacancies.py | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 9d8cd65..8a06e56 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -128,3 +128,35 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, None) + + def test_create_vacancy_with_same_date_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + today = datetime.today() + + url = '/api/vacancies/' + response = self.client.post(url, {'company': new_company.pk, 'open_time': today, + 'close_time': today, 'name': 'new_vacancy', 'description': 'new_vacancy'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + vacancies = Vacancy.objects.count() + self.assertEqual(vacancies,0) + + def test_update_vacancy_with_same_date_failed(self): + superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') + new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, + address=None) + self.client.force_authenticate(user=superuser) + + today = datetime.today() + + new_vacancy = Vacancy.objects.create(company=new_company, verified=False, open_time=datetime.fromtimestamp(0), + description="lalala", close_time=datetime.today(), name='new_company') + + url = '/api/vacancies/' + str(new_vacancy.pk) + '/' + response = self.client.patch(url, {'open_time': today, 'close_time': today, + 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/core/views/vacancies.py b/core/views/vacancies.py index a5da9a9..bbfdda9 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -56,6 +56,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + elif close_time == open_time: + raise ValidationError('Waktu tutup dan buka lowongan tidak boleh sama!') vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) if 'amount' in data: if isinstance(data['amount'], int): @@ -74,6 +76,8 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') + elif close_time == open_time: + raise ValidationError('Waktu tutup dan buka lowongan tidak boleh sama!') vacancy.open_time = open_time vacancy.close_time = close_time vacancy.name = name -- GitLab From e4cf865cb5df25919cb0ad945005a153c23a40c7 Mon Sep 17 00:00:00 2001 From: Azhar Kurnia Date: Sun, 6 Oct 2019 15:48:34 +0700 Subject: [PATCH 024/140] test: create new Vacancy attribute: salary test in React and Django --- assets/js/__test__/components/Vacancy-test.jsx | 2 ++ assets/js/__test__/components/VacancyList-test.jsx | 8 ++++++++ core/models/vacancies.py | 2 ++ core/tests/test_create_vacancies.py | 13 +++++++------ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/assets/js/__test__/components/Vacancy-test.jsx b/assets/js/__test__/components/Vacancy-test.jsx index 9f1e253..31986e0 100644 --- a/assets/js/__test__/components/Vacancy-test.jsx +++ b/assets/js/__test__/components/Vacancy-test.jsx @@ -7,6 +7,7 @@ import Storage from '../../lib/Storage'; describe('Vacancy', () => { const fetchMock = require('fetch-mock'); const response = { + salary: '1', close_time: '2019-03-28T05:55:42Z', company: { address: 'kebayoran baru', @@ -24,6 +25,7 @@ describe('Vacancy', () => { }; const response2 = { + salary: '1', close_time: '2019-03-28T05:55:42Z', company: { address: 'kebayoran baru', diff --git a/assets/js/__test__/components/VacancyList-test.jsx b/assets/js/__test__/components/VacancyList-test.jsx index 0ac2b46..a3e4d51 100644 --- a/assets/js/__test__/components/VacancyList-test.jsx +++ b/assets/js/__test__/components/VacancyList-test.jsx @@ -135,6 +135,7 @@ describe('VacancyList', () => { verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + salary: '1', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -163,6 +164,7 @@ describe('VacancyList', () => { verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + salary: '1', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -191,6 +193,7 @@ describe('VacancyList', () => { verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + salary: '1', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -219,6 +222,7 @@ describe('VacancyList', () => { verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + salary: '1', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -247,6 +251,7 @@ describe('VacancyList', () => { verified: true, open_time: '2017-04-26T03:39:11Z', description: 'deskripsi', + salary: '1', close_time: '2017-04-30T03:39:11Z', created: '2017-04-26T03:39:39.916758Z', updated: '2017-04-26T03:41:07.157634Z', @@ -258,6 +263,7 @@ describe('VacancyList', () => { ]; const response = [{ + salary: '1', close_time: '2019-03-28T05:55:42Z', company: { address: 'kebayoran baru', @@ -273,6 +279,7 @@ describe('VacancyList', () => { updated: '2017-03-28T07:34:13.122093Z', verified: true, }, { + salary: '1', close_time: '2019-03-28T05:55:42Z', company: { address: 'kebayoran baru', @@ -290,6 +297,7 @@ describe('VacancyList', () => { }]; const response2 = [{ + salary: '1', close_time: '2019-03-28T05:55:42Z', company: { address: 'kebayoran baru', diff --git a/core/models/vacancies.py b/core/models/vacancies.py index bdb75cd..93faa69 100644 --- a/core/models/vacancies.py +++ b/core/models/vacancies.py @@ -13,6 +13,8 @@ class Vacancy(models.Model): updated = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100, null=False) amount = models.IntegerField(null=True) + salary = models.IntegerField(default=0) + class Meta: ordering = ['-updated'] diff --git a/core/tests/test_create_vacancies.py b/core/tests/test_create_vacancies.py index 9d8cd65..dba96d2 100644 --- a/core/tests/test_create_vacancies.py +++ b/core/tests/test_create_vacancies.py @@ -23,7 +23,7 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancies = Vacancy.objects.count() self.assertEqual(vacancies,1) - def test_new_vacancy_with_amount_success(self): + def test_new_vacancy_with_amount_salary_success(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, address=None) @@ -37,6 +37,7 @@ class CreateAndUpdateVacancyTest(APITestCase): vacancy = Vacancy.objects.first() self.assertEqual(vacancy.amount, 10) + self.assertEqual(vacancy.salary, 0) def test_new_vacancy_failed(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') @@ -61,7 +62,7 @@ class CreateAndUpdateVacancyTest(APITestCase): url = '/api/vacancies/' response = self.client.post(url, {'company': new_company.pk, 'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), 'name': 'new_vacancy', - 'description': 'new_vacancy ', 'amount': 'sepuluh'}, format='json') + 'description': 'new_vacancy ', 'amount': 'sepuluh', 'salary':'dua juta'}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) vacancies_count = Vacancy.objects.count() @@ -81,7 +82,7 @@ class CreateAndUpdateVacancyTest(APITestCase): 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_update_vacancy_with_amount_success(self): + def test_update_vacancy_with_amount_salary_success(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, address=None) @@ -92,7 +93,7 @@ class CreateAndUpdateVacancyTest(APITestCase): url = '/api/vacancies/' + str(new_vacancy.pk) + '/' response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), - 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 10}, format='json') + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 10, 'salary': 2}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) vacancy = Vacancy.objects.first() @@ -112,7 +113,7 @@ class CreateAndUpdateVacancyTest(APITestCase): 'name': 'new_vacancy2', 'description': 'new_vacancy2'}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_update_vacancy_with_amount_failed(self): + def test_update_vacancy_with_amount_salary_string_failed(self): superuser = User.objects.create_superuser('dummy.company', 'dummy.company@company.com', 'lalala123') new_company = Company.objects.create(user=superuser, description="lalalaz", status=Company.VERIFIED, logo=None, address=None) @@ -123,7 +124,7 @@ class CreateAndUpdateVacancyTest(APITestCase): url = '/api/vacancies/' + str(new_vacancy.pk) + '/' response = self.client.patch(url, {'open_time': datetime.fromtimestamp(0), 'close_time': datetime.today(), - 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 'sepuluh'}, format='json') + 'name': 'new_vacancy2', 'description': 'new_vacancy2', 'amount': 'sepuluh', 'salary': 'dua juta'}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) vacancy = Vacancy.objects.first() -- GitLab From 366ad60dd53588eab47fd72397a99503f67d9ea5 Mon Sep 17 00:00:00 2001 From: Azhar Kurnia Date: Sun, 6 Oct 2019 15:57:57 +0700 Subject: [PATCH 025/140] add new django migrations to add new field --- core/migrations/0020_merge_20191006_1406.py | 16 ++++++++++++++++ core/migrations/0021_vacancy_salary.py | 20 ++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 core/migrations/0020_merge_20191006_1406.py create mode 100644 core/migrations/0021_vacancy_salary.py diff --git a/core/migrations/0020_merge_20191006_1406.py b/core/migrations/0020_merge_20191006_1406.py new file mode 100644 index 0000000..12d371c --- /dev/null +++ b/core/migrations/0020_merge_20191006_1406.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-06 07:06 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0017_vacancy_amount'), + ('core', '0019_merge_20191006_0852'), + ] + + operations = [ + ] diff --git a/core/migrations/0021_vacancy_salary.py b/core/migrations/0021_vacancy_salary.py new file mode 100644 index 0000000..94f1f06 --- /dev/null +++ b/core/migrations/0021_vacancy_salary.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-06 07:07 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0020_merge_20191006_1406'), + ] + + operations = [ + migrations.AddField( + model_name='vacancy', + name='salary', + field=models.IntegerField(default=0), + ), + ] -- GitLab From f40992f232281f1928e8b498a6bf724e846e7c41 Mon Sep 17 00:00:00 2001 From: Azhar Kurnia Date: Sun, 6 Oct 2019 15:58:27 +0700 Subject: [PATCH 026/140] feat: implement new column Salary in front end and back end --- assets/js/CreateVacancy.jsx | 4 ++++ assets/js/components/Vacancy.jsx | 3 ++- assets/js/components/VacancyList.jsx | 1 + core/serializers/vacancies.py | 2 +- core/views/vacancies.py | 5 ++++- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/assets/js/CreateVacancy.jsx b/assets/js/CreateVacancy.jsx index b2bff53..1d5122f 100644 --- a/assets/js/CreateVacancy.jsx +++ b/assets/js/CreateVacancy.jsx @@ -32,6 +32,7 @@ export default class CreateVacancy extends React.Component { close_time: moment(), name: '', description: '', + salary: 0, }; if (this.state.vacancyId) { @@ -39,6 +40,7 @@ export default class CreateVacancy extends React.Component { this.setState({ description: r.description, name: r.name, + salary: r.salary, open_time: moment(r.open_time), close_time: moment(r.close_time), loading: false, @@ -70,6 +72,7 @@ export default class CreateVacancy extends React.Component { const data = {}; data.name = this.state.name; data.description = this.state.description; + data.salary = this.state.salary; data.open_time = this.state.open_time.format(); data.close_time = this.state.close_time.format(); if (!this.state.vacancyId) { @@ -104,6 +107,7 @@ export default class CreateVacancy extends React.Component { }
+

{ this.props.data.name }

{ this.props.data.company.name }
- { this.props.data.company.address }

+ { this.props.data.company.address }
+ Rp. { this.props.data.salary }

{`Ditutup ${moment(moment(this.props.data.close_time)).fromNow()}`}
diff --git a/assets/js/components/VacancyList.jsx b/assets/js/components/VacancyList.jsx index 56efd84..654baa0 100644 --- a/assets/js/components/VacancyList.jsx +++ b/assets/js/components/VacancyList.jsx @@ -70,6 +70,7 @@ export default class VacancyList extends React.Component { bookmarked={vacancy.bookmarked ? 1 : 0} data={vacancy} studentId={this.props.userId} + salary={this.props.salary} /> ), ); diff --git a/core/serializers/vacancies.py b/core/serializers/vacancies.py index 5938e5f..c519a4d 100644 --- a/core/serializers/vacancies.py +++ b/core/serializers/vacancies.py @@ -33,7 +33,7 @@ class VacancySerializer(serializers.ModelSerializer): class Meta: model = Vacancy fields = ['company', 'verified', 'open_time', 'description', 'close_time', 'created', 'updated', 'name', \ - 'status', 'bookmarked', 'id'] + 'status', 'bookmarked', 'id', 'salary'] class PostVacancySerializer(serializers.ModelSerializer): diff --git a/core/views/vacancies.py b/core/views/vacancies.py index f51cfd3..38b9028 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -56,10 +56,11 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): open_time = data['open_time'] close_time = data['close_time'] name = data['name'] + salary = data['salary'] description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') - vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description) + vacancy = Vacancy(company=company, open_time=open_time, close_time=close_time, name=name, description=description, salary=salary) if 'amount' in data: if isinstance(data['amount'], int): vacancy.amount = data['amount'] @@ -72,6 +73,7 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): data = request.data vacancy = Vacancy.objects.get(pk=pk) open_time = data['open_time'] + salary = data['salary'] close_time = data['close_time'] name = data['name'] description = data['description'] @@ -80,6 +82,7 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): vacancy.open_time = open_time vacancy.close_time = close_time vacancy.name = name + vacancy.salary = salary vacancy.description = description if 'amount' in data: if isinstance(data['amount'], int): -- GitLab From f85ed76f0173df78c75ccaf8508bf5cf96f029d9 Mon Sep 17 00:00:00 2001 From: Ahmad Satryaji Aulia Date: Sun, 6 Oct 2019 16:19:16 +0700 Subject: [PATCH 027/140] Implement custom validator for NPM We now validate NPM length and checksum for Student's npm field --- core/lib/validators.py | 27 ++++++++++++++++++++++ core/migrations/0014_auto_20191004_1340.py | 21 +++++++++++++++++ core/models/accounts.py | 4 ++-- core/tests/test_accounts.py | 11 +++++++++ 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 core/migrations/0014_auto_20191004_1340.py diff --git a/core/lib/validators.py b/core/lib/validators.py index 4aaa224..54c9b3f 100644 --- a/core/lib/validators.py +++ b/core/lib/validators.py @@ -1,4 +1,5 @@ import os +import math from django.core.exceptions import ValidationError from kape.settings import MAX_UPLOAD_SIZE @@ -18,3 +19,29 @@ def validate_document_file_extension(value): def validate_image_file_extension(value): validate_file(value, ['.jpeg', '.jpg', '.png', '.JPG', '.JPEG']) + + +def validate_npm(value): + ''' + NPM UI terdiri dari 10 digit, misalnya: 1234567894. Digit terakhir + (disebut checksum) dapat dihitung dari sembilan digit pertama. + Checksum dipakai untuk deteksi error pada nomor ID seperti NPM. + Digit-digit tersebut diberi indeks: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + sesuai posisinya. Kita asosiasikan digit-digit tersebut dengan + variabel-variabel d[0], d[1], d[2] , ..., d[9]. + Checksum C (yaitu d[9]) dihitung dengan rumus sebagai berikut: + 1) a = 3* (d[0] + d[2] + d[4] + d[6] + d[8]) + 2) b = (d[1] + d[3] + d[5] + d[7]) + 3) C = (a + b) % 7 + + Sebagai contoh, checksum untuk NPM 1234567894 adalah + C = (3*(1 + 3 + 5 + 7 + 9) + (2 + 4 + 6 + 8)) % 7 = 95 % 7 = 4 + yang memang ternyata benar. + + Source: Lim Yohanes Stefanus, Drs., M.Math., Ph.D + ''' + if math.ceil(math.log(value+1, 10)) != 10: + raise ValidationError(u"NPM must be 10 digits") + val_string = str(value) + if sum([3*int(a) for a in val_string[:-1:2]]+[int(a) for a in val_string[1:-1:2]]) % 7 != int(val_string[-1]): + raise ValidationError(u"NPM {} has invalid checksum".format(value)) \ No newline at end of file diff --git a/core/migrations/0014_auto_20191004_1340.py b/core/migrations/0014_auto_20191004_1340.py new file mode 100644 index 0000000..fdff75b --- /dev/null +++ b/core/migrations/0014_auto_20191004_1340.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2019-10-04 06:40 +from __future__ import unicode_literals + +import core.lib.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0013_auto_20170602_1130'), + ] + + operations = [ + migrations.AlterField( + model_name='student', + name='npm', + field=models.IntegerField(unique=True, validators=[core.lib.validators.validate_npm]), + ), + ] diff --git a/core/models/accounts.py b/core/models/accounts.py index 2ada280..b54f46b 100644 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -5,7 +5,7 @@ from django.contrib.auth.models import User from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models -from core.lib.validators import validate_document_file_extension, validate_image_file_extension +from core.lib.validators import validate_document_file_extension, validate_image_file_extension, validate_npm def get_student_resume_file_path(instance, filename): @@ -53,7 +53,7 @@ class Student(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) user = models.OneToOneField(User) - npm = models.IntegerField(validators=[MinValueValidator(100000000), MaxValueValidator(9999999999)], unique=True) + npm = models.IntegerField(validators=[validate_npm], unique=True) resume = models.FileField(upload_to=get_student_resume_file_path, null=True, blank=True, validators=[validate_document_file_extension]) phone_number = models.CharField(max_length=100, blank=True, db_index=True, null=True) bookmarked_vacancies = models.ManyToManyField('core.Vacancy', related_name="bookmarked_vacancies", blank=True) diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index d606b62..4233ec9 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -2,6 +2,7 @@ import requests_mock from rest_framework import status from rest_framework.test import APIClient, APITestCase from django.contrib.auth.models import User +from django.core.exceptions import ValidationError from core.models.accounts import Company, Supervisor, Student @@ -103,6 +104,16 @@ class RegisterTests(APITestCase): response = self.client.post(url, {'username': 'lalala'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + def test_npm_validator(self): + new_user = User.objects.create_user('dummy.student2', 'dummy.student@student.com', 'lalala123') + short_npm = Student(user=new_user, npm="123456789") + self.assertRaises(ValidationError, short_npm.full_clean) + wrong_checksum = Student(user=new_user, npm="1234567890") + self.assertRaises(ValidationError, wrong_checksum.full_clean) + right_checksum = Student(user=new_user, npm="1234567894") + right_checksum.full_clean() + + class ProfileUpdateTests(APITestCase): -- GitLab From 5df36038cf77401ae4b1f73a7c29271e29b5596a Mon Sep 17 00:00:00 2001 From: Azhar Kurnia Date: Sun, 6 Oct 2019 16:26:44 +0700 Subject: [PATCH 028/140] fix: add default value 0 for salary --- core/views/vacancies.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/views/vacancies.py b/core/views/vacancies.py index 38b9028..93b38f8 100644 --- a/core/views/vacancies.py +++ b/core/views/vacancies.py @@ -56,7 +56,7 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): open_time = data['open_time'] close_time = data['close_time'] name = data['name'] - salary = data['salary'] + salary = data.get('salary') or 0 description = data['description'] if close_time < open_time: raise ValidationError('Waktu tutup lowongan harus lebih dari waktu buka lowongan!') @@ -73,7 +73,7 @@ class VacancyViewSet(MultiSerializerViewSetMixin, viewsets.ModelViewSet): data = request.data vacancy = Vacancy.objects.get(pk=pk) open_time = data['open_time'] - salary = data['salary'] + salary = data.get('salary') or 0 close_time = data['close_time'] name = data['name'] description = data['description'] -- GitLab From 489eaeabfa705cbe7f053772d20a51e4903afdd5 Mon Sep 17 00:00:00 2001 From: "alif.ahsanil61" Date: Sun, 6 Oct 2019 16:28:53 +0700 Subject: [PATCH 029/140] write test that failed --- .vscode/settings.json | 3 +++ core/tests/test_accounts.py | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..72fd0fe --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "d:\\PMPL\\kape\\env\\Scripts\\python.exe" +} \ No newline at end of file diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index d1ee00d..cef1487 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -155,3 +155,13 @@ class ProfileUpdateTests(APITestCase): url = '/api/students/' + str(new_student.pk) + "/profile/" response = self.client.patch(url, {'phone_number': '08123123123'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + url = '/api/students/' + str(student_id) + "/profile/" + data = self._create_test_file('./.tmp/pdf-coba.pdf') + response = self.client.patch(url, data, format='multipart') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + + def _create_test_file(self,path): + f = open(path, 'r') + return {'datafile': f} \ No newline at end of file -- GitLab From b9900e94b8300929757bf4e8286c3b8166ff03f3 Mon Sep 17 00:00:00 2001 From: "alif.ahsanil61" Date: Sun, 6 Oct 2019 16:30:14 +0700 Subject: [PATCH 030/140] delete .vscode that acidentally added as commit before --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 72fd0fe..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.pythonPath": "d:\\PMPL\\kape\\env\\Scripts\\python.exe" -} \ No newline at end of file -- GitLab From 6250d394767af6278c7b5190d1e616ec1507a7fa Mon Sep 17 00:00:00 2001 From: "alif.ahsanil61" Date: Sun, 6 Oct 2019 16:31:16 +0700 Subject: [PATCH 031/140] change dict key --- core/tests/test_accounts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index cef1487..f2007d6 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -164,4 +164,4 @@ class ProfileUpdateTests(APITestCase): def _create_test_file(self,path): f = open(path, 'r') - return {'datafile': f} \ No newline at end of file + return {'pdf_file': f} \ No newline at end of file -- GitLab From 0ebefb773d0368fb6f61241c0916b228f0acba2a Mon Sep 17 00:00:00 2001 From: Izzatul Muttaqin Date: Sun, 6 Oct 2019 17:44:47 +0700 Subject: [PATCH 032/140] Re design tulisan keterangan biodata --- assets/js/ProfilePage.jsx | 212 ++++++++++++-------- core/migrations/0020_merge_20191006_1354.py | 16 ++ 2 files changed, 141 insertions(+), 87 deletions(-) create mode 100644 core/migrations/0020_merge_20191006_1354.py diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index a2d40e7..1f8df15 100644 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -17,6 +17,7 @@ export default class ProfilePage extends React.Component { super(props); /* istanbul ignore next */ this.state = { + editing: false, id: '', npm: '', name: '', @@ -54,6 +55,7 @@ export default class ProfilePage extends React.Component { this.gotoLink = this.gotoLink.bind(this); this.gotoStudentResume = this.gotoStudentResume.bind(this); this.gotoStudentTranscript = this.gotoStudentTranscript.bind(this); + this.changeStateEditing = this.changeStateEditing.bind(this); this.getProfile(); } @@ -134,6 +136,12 @@ export default class ProfilePage extends React.Component { win.focus(); }; + changeStateEditing = (status) => { + this.setState({ + editing: !status + }) + } + gotoStudentResume = () => this.gotoLink(this.state.resume || '#'); gotoStudentTranscript = () => this.gotoLink(`transkrip/${this.state.id}`); @@ -142,93 +150,130 @@ export default class ProfilePage extends React.Component { if (show) { return ( -
- - - Edit Profile Page - -
- { this.modalAlert = modal; }} /> -
{ this.form = input; }} key={this.state.refresh} size="small" onSubmit={this.handleSubmit}> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
+
+ + + Edit Profile Page + +
+ { this.modalAlert = modal; }} /> +
{ this.form = input; }} key={this.state.refresh} size="small" onSubmit={this.handleSubmit}> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); } return (
); } - render() { + biodataRender(){ const defaultPicture = 'https://semantic-ui.com/images/wireframe/square-image.png'; return ( -
- + - +

- +
- +
- -

{ this.state.name }

-
+ + + + + + +
+

{ this.state.name }

+
+ +
+ + + +
+ + +
+
+
+

Bagikan Transkrip : { this.state.bagikanTranskrip ? 'Ya' : 'Tidak' }

+
+
+ +
+ +
+ - - + +

Deskripsi Singkat

- -

{ this.state.major || 'N/A' }, { this.state.batch || 'N/A' }

+ +

{ this.state.intro || 'N/A' }

- + + + + + + + + + + +

{ this.state.major || 'N/A' }, { this.state.batch || 'N/A' }

+
+
+
+ @@ -250,6 +295,10 @@ export default class ProfilePage extends React.Component { +
+ + + @@ -271,9 +320,8 @@ export default class ProfilePage extends React.Component { -
- + @@ -284,35 +332,25 @@ export default class ProfilePage extends React.Component { +
+ +
+
- - - -

Intro

-
- -

{ this.state.intro || 'N/A' }

-
-
-
- - - - -
- - -
-
-
-

Bagikan Transkrip : { this.state.bagikanTranskrip ? 'Ya' : 'Tidak' }

-
-
+ ) + } + + render() { + console.log(this.state.editing); + return ( +
+ { this.biodataRender() } { this.updateForm(this.props.route.own) } +
); } diff --git a/core/migrations/0020_merge_20191006_1354.py b/core/migrations/0020_merge_20191006_1354.py new file mode 100644 index 0000000..bcc1635 --- /dev/null +++ b/core/migrations/0020_merge_20191006_1354.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.17 on 2019-10-06 06:54 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0019_merge_20191006_0852'), + ('core', '0017_vacancy_amount'), + ] + + operations = [ + ] -- GitLab From bcd0017cc07a86220cb96944ca90bda28341ebde Mon Sep 17 00:00:00 2001 From: JONATHAN EDWIN Date: Sun, 6 Oct 2019 18:31:29 +0700 Subject: [PATCH 033/140] 1606891500 - 17 (Menghandle input nomor telepon yang invalid) --- .DS_Store | Bin 6148 -> 10244 bytes core/models/accounts.py | 6 +++--- core/tests/__init__.py | 2 +- core/tests/test_accounts.py | 6 +++++- provision/.DS_Store | Bin 0 -> 6148 bytes provision/nginx/.DS_Store | Bin 0 -> 6148 bytes 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 provision/.DS_Store create mode 100644 provision/nginx/.DS_Store diff --git a/.DS_Store b/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..f7f483acb97228b6a5231f492172bfd49632aac7 100644 GIT binary patch literal 10244 zcmeHM-A)rh6g~r0wgqA}M!a)xOt^psMC8Jl)B+bIYK%2{p$2wof#R}@+l7Ky(;MFb zAHg^A4SWUfeE|K=>~u5xL%1`fnQ3Ou?C$x_?0j?PY|fO3MB}KnNMsX{h03xzg{GkJ zbFR5ErtaK>6u=Wj)ZOrcZPyFjoVK}P7%&VN1`Gp+0mHymU;y82F4kl$O=}o13>XFy z1~@+0s4VMB4q_=o2O60IK$dV@7W9z^NQ|vyUCBW#B@{N}>_I4~P$`Cp;dpMdI%HkR zK`di9i5N~ojVx4#BIM}6*;1WEJ(i|53>XIT3~=s#ogC`o*UsecypmI7}fS>N6*Xc$J3%|tJcug4gxRfJMNoKySG`ry&CwD)A8G(1b13(sJwsM@moQ!5ghrguC&vPA6Qn| zDsNV2&d!z>=IrGMOZ_?fY-I)ghf9z8{jxQ4fAPu2*1_rLvoHOx=W?bbRH&gF@paOE zM=#;wxEcCh;P2ud>sP2nF4e&1C-SHRM%%QM=1R;!Pv`U&Fadb|2;Gq8CBp}FhA*iZBKWj}-hS%*Zx|PJ#wO?)ZO|&M(+g_SdfxX^ z{FdbiK1SJN{GYH-Xy8S7vnj`np5QBH(_sigTFX*^3a3S=Lv2(hpIRr;SVQFh$ zfEZCPD41!+AIkI!EBX{M=s9E!tJX^M&EJOG(T2jEi@Rzc9lc z+`&F8vc(+gwr=KZU1ov#)Gf^9EO=mR8*k*{4KA@Jxz@i?`MJfrnLX+GHFfhUljK_1c`TT$V;{X3gm;p02!+>Exl-8PS4e&5L@XAucXYDrX7AhCk z8^lsV(8%L>NO>HO3qFpYMP=OumR!)UD>;ZI?x6htKLg}h*twRi738=D`JKuC)!B&2 R|8w~|pAYF7?iJ7f{{cKAI`jYl delta 98 zcmZn(XfcprU|?W$DortDU=RQ@Ie-{MGpJ516q~502;ws^0>w5KPGg_gAhnpCgF}!R mBnTAa1`@77th%xAJM(0I6-7qI$)+kstROQPHplbKVFm!!rw@hz diff --git a/core/models/accounts.py b/core/models/accounts.py index b54f46b..310679e 100644 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -2,7 +2,7 @@ import os import uuid from django.contrib.auth.models import User -from django.core.validators import MinValueValidator, MaxValueValidator +from django.core.validators import MinValueValidator, MaxValueValidator, RegexValidator from django.db import models from core.lib.validators import validate_document_file_extension, validate_image_file_extension, validate_npm @@ -55,7 +55,7 @@ class Student(models.Model): user = models.OneToOneField(User) npm = models.IntegerField(validators=[validate_npm], unique=True) resume = models.FileField(upload_to=get_student_resume_file_path, null=True, blank=True, validators=[validate_document_file_extension]) - phone_number = models.CharField(max_length=100, blank=True, db_index=True, null=True) + phone_number = models.CharField(max_length=12, blank=True, db_index=True, null=True, validators=[RegexValidator(r'^0\d{1,11}$')]) bookmarked_vacancies = models.ManyToManyField('core.Vacancy', related_name="bookmarked_vacancies", blank=True) applied_vacancies = models.ManyToManyField('core.Vacancy', related_name="applied_vacancies", blank=True, through='core.Application') @@ -67,7 +67,7 @@ class Student(models.Model): photo = models.FileField(upload_to=get_student_photo_file_path, null=True, blank=True, validators=[validate_image_file_extension]) linkedin_url = models.URLField(max_length=200,blank=True, null=True) region = models.CharField(max_length=30, blank=True, null=True) - + intro = models.CharField(max_length=50, blank=True, null=True) @property diff --git a/core/tests/__init__.py b/core/tests/__init__.py index e8d87c6..a799147 100755 --- a/core/tests/__init__.py +++ b/core/tests/__init__.py @@ -1,4 +1,4 @@ # __init__.py -from core.tests.test_accounts import LoginTests, RegisterTests +from core.tests.test_accounts import LoginTests, RegisterTests, ProfileUpdateTests from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests from core.tests.test_feedbacks import FeedbacksTests diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index 4233ec9..0a59be2 100644 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -136,7 +136,7 @@ class ProfileUpdateTests(APITestCase): "angkatan": "2017" }] }, status_code=200) - + print("Hello World!") url = '/api/login/' response = self.client.post(url, {'username': 'dummy.mahasiswa', 'password': 'lalala', 'login-type': 'sso-ui'}, format='json') @@ -160,6 +160,10 @@ class ProfileUpdateTests(APITestCase): response = self.client.patch(url, {'email': 'saasdasd'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + url = '/api/students/' + str(student_id) + "/profile/" + response = self.client.patch(url, {'phone_number': '````'}, format='multipart') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + url = '/api/students/123123123/profile/' response = self.client.patch(url, {'phone_number': '08123123123'}, format='multipart') self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) diff --git a/provision/.DS_Store b/provision/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..61d1f2da3985a90f5832911c6e4158fa5e0cfcb3 GIT binary patch literal 6148 zcmeHK!EVz)5S>la;sjOo0Vy1PLE=zQN+~^5NLFYMy&)OF0Z?nlR%2njk?l0JA;_2h zL;DH*34g%nz?y)OSLxfZz{lhw@NvkP>Qy>fBZ`9!5{umrha~-GMbiSv(w+Aah8@< zzyDpdR@$p;cO0kdbl1D@gOQvDRai~RL0G)y-pjBWMJ9eFWp*8h(d#ss9=Z2k$h->E zJSh}8jT4l-dz0p|oDSq9k4rU9pdUC+$LSooz1eK1zv=Bf*`9BDv)x_9Pq&}V=N+f_ zVC(te@yE0C+2{F}OSJ|PcvqEe82klS2pTIq4T?OI`3bVjSf_#}(C87xBxy(=C_&~i zl{9L+^{m=gcvH0v)Ff1aJ^nLW^cL7I*cFACs{)%xD(DouHAHmF?BZg9kFGVVfK|XM zu%LkX4mx)i^0sRgunJfO`1|0&8GVDbM)m1HqpkqJHqy!v^Ist5cm{ogwMIOF2~7oR zsxVg!q3Otbrp`B5Yt(cS=JFxT%);DIgqj`Wd#ap-uhF(v0jt1G1y*#|<@5jG_xJys zB-^tJSOxwo1w?y4*dJg?=4@SB9G|rw{20#0b+yK83IcT$qn3~2`*3B*dmI3LgSAFv QVD^uIlEF4sfxoK2PZ4&DQ~&?~ literal 0 HcmV?d00001 diff --git a/provision/nginx/.DS_Store b/provision/nginx/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d5d5bf94962214228bf6af09b5185b6d6d050d02 GIT binary patch literal 6148 zcmeHK&2G~`5S~p#*#seSKq^OHkT_H*rIa2Jk`>CKHzXrC0BY?zw3dvwN*n@&AU_5? z0&l__@Hp_z?oibVTv3E(q}gwFc4qDUcC|l5WJa@mhiE`V7RuP^q4D z-^X3b4@-BFl`dO}R>wLrz;m}rC*-K2H`Ja#UK9_ZcYb>Dzu$_@=F@YT>+jilSxoEU z@Q3Mabgyh)wYG2j*ZZ%NGdEA_w4O~z>EtEXo~HF#CiXMu$_qQqo)_c!(ctD|SJi1z zjVC_2$j1nI^`fY9Hy^oKl}~*?NocUPXM0D3t;J$*xE<}?+g)x)i~W7r_jeyGmp!|6 zd*{*N@!Jm{7oV1&zxYv*!Fu&_L-03zh0z-0yJS+8t~!OEbNb-vlnRvZ!ItoLY0Wcd z-=LQ{Lsdl?PzIENwPHZ_KznVi{z`vF8Bhk+fdSqhA}C`l*aY-j2MYfL0P;1`3v9ju zaZV%{3pN4K0x=;K7*dTqF-%B@Ka#juun8E_$;jiw$d`@0P>laN`j31#nK+=9%78M^ zW?&;!2YmiN`TP67ouoBoKpFV27%<&~ Date: Sun, 6 Oct 2019 19:03:01 +0700 Subject: [PATCH 034/140] modify write tests that failed --- assets/img/image-coba.jpg | Bin 0 -> 79776 bytes assets/pdf/pdf-coba.pdf | Bin 0 -> 14580626 bytes core/tests/test_accounts.py | 6 +++++- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 assets/img/image-coba.jpg create mode 100644 assets/pdf/pdf-coba.pdf diff --git a/assets/img/image-coba.jpg b/assets/img/image-coba.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71582c476ad9d91e873d5a123b48e958428686d4 GIT binary patch literal 79776 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%0Da87w0F;zs? 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�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

6HzP&~d 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%0DcsNR%K@BGhRLM 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