Add support for Journals frontend app

This commit is contained in:
Bill Filler
2018-09-04 12:42:37 -04:00
parent 565670323d
commit a8b1fee847
12 changed files with 156 additions and 123 deletions

View File

@@ -17,7 +17,7 @@
<ul class="courses-listing journal-list"> <ul class="courses-listing journal-list">
%for journal in journal_info.get('journals'): %for journal in journal_info.get('journals'):
<li class="courses-listing-item"> <li class="courses-listing-item">
<%include file="journals/journal_card.html" args="journal=journal, journals_root_url=journal_info.get('journals_root_url')" /> <%include file="journals/journal_card.html" args="journal=journal" />
</li> </li>
%endfor %endfor
</ul> </ul>

View File

@@ -66,7 +66,7 @@
<ul class="courses-listing journal-list"> <ul class="courses-listing journal-list">
%for journal in journal_info.get('journals'): %for journal in journal_info.get('journals'):
<li class="courses-listing-item"> <li class="courses-listing-item">
<%include file="../journals/journal_card.html" args="journal=journal, journals_root_url=journal_info.get('journals_root_url')" /> <%include file="../journals/journal_card.html" args="journal=journal" />
</li> </li>
%endfor %endfor
</ul> </ul>

View File

@@ -1,6 +1,7 @@
""" """
APIs providing support for Journals functionality. APIs providing support for Journals functionality.
""" """
from urlparse import urljoin, urlsplit, urlunsplit
import logging import logging
import hashlib import hashlib
import six import six
@@ -275,20 +276,67 @@ def get_journal_bundles(site, bundle_uuid=''):
def get_journals_root_url(): def get_journals_root_url():
""" """
Return the base url used to display Journals Return the base url for the journals service
""" """
if journals_enabled(): if journals_enabled():
if configuration_helpers.is_site_configuration_enabled(): return configuration_helpers.get_value(
return configuration_helpers.get_configuration_value( 'JOURNALS_URL_ROOT',
'JOURNALS_URL_ROOT', settings.JOURNALS_URL_ROOT
settings.JOURNALS_URL_ROOT )
)
else:
return settings.JOURNALS_URL_ROOT
else: else:
return None return None
def get_journals_frontend_url():
"""
Return the frontend url used to display Journals
"""
if journals_enabled():
return configuration_helpers.get_value(
'JOURNALS_FRONTEND_URL',
settings.JOURNALS_FRONTEND_URL
)
else:
return None
def get_journal_about_page_url(about_page_id=0, auth=True):
"""
Return url to journal about page.
If auth=True, the url will redirect through the journals service log in page
which will prevent the "purchase now" button being shown.
If auth=False, the url will point to Journal About Page with purchase button shown
Arguments:
about_page_id (int): id of Journal About Page as found in Discovery
auth (boolen): authorization flag, if true will force login to journal service
and redirect to last visited page in Journal after login. If false, this method
will return direct url to journal about page.
Returns:
url (str): url pointing to Journals Service login, w/ a redirect to last visited journal page
or url pointing directly to journal about page.
"""
if not auth:
return urljoin(get_journals_frontend_url(), '{id}/about'.format(id=about_page_id))
# by providing just the about_page_id in the url, the user will be redirected
# to the last page viewed after logging in
about_page_url = urljoin(get_journals_frontend_url(), '{id}'.format(id=about_page_id))
login_url = urljoin(get_journals_root_url(), 'require_auth')
query = 'forward={next_url}'.format(next_url=about_page_url)
split_url = urlsplit(login_url)
url = urlunsplit((
split_url.scheme,
split_url.netloc,
split_url.path,
query,
split_url.fragment,
))
return url
def get_journals_context(request): def get_journals_context(request):
""" """
Return dict of Journal context information for a given request Return dict of Journal context information for a given request
@@ -299,12 +347,10 @@ def get_journals_context(request):
Returns: Returns:
dict containing the following information: dict containing the following information:
dict['journals'] - list of Journals available for purchase dict['journals'] - list of Journals available for purchase
dict['journals_root_url'] - root url for Journals service
dict['journal_bundles'] - list of JournalBundles available for purchase dict['journal_bundles'] - list of JournalBundles available for purchase
""" """
journal_info = {} journal_info = {}
journal_info['journals'] = get_journals(request.site) journal_info['journals'] = get_journals(request.site)
journal_info['journals_root_url'] = get_journals_root_url()
journal_info['journal_bundles'] = get_journal_bundles(request.site) journal_info['journal_bundles'] = get_journal_bundles(request.site)
return journal_info return journal_info

View File

@@ -6,6 +6,7 @@ def plugin_settings(settings):
Settings for AWS/Production Settings for AWS/Production
""" """
settings.JOURNALS_URL_ROOT = settings.ENV_TOKENS.get('JOURNALS_URL_ROOT', settings.JOURNALS_URL_ROOT) settings.JOURNALS_URL_ROOT = settings.ENV_TOKENS.get('JOURNALS_URL_ROOT', settings.JOURNALS_URL_ROOT)
settings.JOURNALS_FRONTEND_URL = settings.ENV_TOKENS.get('JOURNALS_FRONTEND_URL', settings.JOURNALS_FRONTEND_URL)
settings.JOURNALS_API_URL = settings.ENV_TOKENS.get('JOURNALS_API_URL', settings.JOURNALS_API_URL) settings.JOURNALS_API_URL = settings.ENV_TOKENS.get('JOURNALS_API_URL', settings.JOURNALS_API_URL)
settings.COURSE_CATALOG_URL_BASE = settings.ENV_TOKENS.get( settings.COURSE_CATALOG_URL_BASE = settings.ENV_TOKENS.get(
'COURSE_CATALOG_URL_BASE', settings.COURSE_CATALOG_URL_BASE) 'COURSE_CATALOG_URL_BASE', settings.COURSE_CATALOG_URL_BASE)

View File

@@ -6,6 +6,7 @@ def plugin_settings(settings):
Common settings for Journals Common settings for Journals
""" """
settings.JOURNALS_URL_ROOT = None settings.JOURNALS_URL_ROOT = None
settings.JOURNALS_FRONTEND_URL = None
settings.JOURNALS_API_URL = None settings.JOURNALS_API_URL = None
settings.FEATURES['JOURNALS_ENABLED'] = False settings.FEATURES['JOURNALS_ENABLED'] = False
settings.COURSE_CATALOG_URL_BASE = None settings.COURSE_CATALOG_URL_BASE = None

View File

@@ -6,6 +6,7 @@ def plugin_settings(settings):
Devstack settings for Journals Devstack settings for Journals
""" """
settings.JOURNALS_URL_ROOT = 'http://localhost:18606' settings.JOURNALS_URL_ROOT = 'http://localhost:18606'
settings.JOURNALS_FRONTEND_URL = 'http://localhost:1991'
settings.JOURNALS_API_URL = 'http://journals.app:18606/api/v1/' settings.JOURNALS_API_URL = 'http://journals.app:18606/api/v1/'
settings.FEATURES['JOURNALS_ENABLED'] = True settings.FEATURES['JOURNALS_ENABLED'] = True
settings.COURSE_CATALOG_URL_BASE = 'http://edx.devstack.discovery:18381' settings.COURSE_CATALOG_URL_BASE = 'http://edx.devstack.discovery:18381'

View File

@@ -12,6 +12,7 @@ from mako import exceptions
from urlparse import urljoin from urlparse import urljoin
from openedx.core.djangolib.markup import HTML, Text from openedx.core.djangolib.markup import HTML, Text
from openedx.features.journals.api import get_journal_about_page_url
%> %>
<%namespace name='static' file='../static_content.html'/> <%namespace name='static' file='../static_content.html'/>
@@ -128,6 +129,10 @@ from openedx.core.djangolib.markup import HTML, Text
</div> </div>
% endfor % endfor
% for journal in bundle.get('journals'): % for journal in bundle.get('journals'):
<%
about_page_id = journal['about_page_id']
about_page_url = get_journal_about_page_url(about_page_id, False)
%>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2> <h2>
@@ -143,7 +148,7 @@ from openedx.core.djangolib.markup import HTML, Text
</div> </div>
<div class="col-9 col-lg-6"> <div class="col-9 col-lg-6">
<div> <div>
<a href="${urljoin(journals_root_url, journal['slug'])}">${journal['title']}</a> <a href="${about_page_url}">${journal['title']}</a>
</div> </div>
<div>${journal['short_description'] or ''}</div> <div>${journal['short_description'] or ''}</div>
</div> </div>
@@ -154,7 +159,7 @@ from openedx.core.djangolib.markup import HTML, Text
)} )}
</div> </div>
<div> <div>
<a class="btn btn-primary btn-block btn-success" href="${urljoin(journals_root_url, journal['slug'])}">${_("View Journal")}</a> <a class="btn btn-primary btn-block btn-success" href="${about_page_url}">${_("View Journal")}</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -4,10 +4,15 @@ from django.utils.translation import ungettext, ugettext as _
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from six import text_type from six import text_type
from urlparse import urljoin from urlparse import urljoin
from openedx.features.journals.api import get_journal_about_page_url
%> %>
<%page args="journal, journals_root_url" expression_filter="h"/> <%page args="journal" expression_filter="h"/>
<article class="journal" id="${journal.get('slug')}" role="region" aria-label="${journal.get('title')}"> <%
<a class="journals-listing-item" href="${urljoin(journals_root_url, journal.get('slug'))}"> about_page_id = journal.get('about_page_id')
about_page_url = get_journal_about_page_url(about_page_id, False)
%>
<article class="journal" id="${about_page_id}" role="region" aria-label="${journal.get('title')}">
<a class="journals-listing-item" href="${about_page_url}">
<header class="journal-image"> <header class="journal-image">
<div class="cover-image"> <div class="cover-image">
<img src="${journal.get('card_image_url')}" alt="${journal.get('title')}" /> <img src="${journal.get('card_image_url')}" alt="${journal.get('title')}" />

View File

@@ -6,7 +6,8 @@
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from openedx.core.djangolib.js_utils import dump_js_escaped_json, js_escaped_string from openedx.core.djangolib.js_utils import dump_js_escaped_json, js_escaped_string
from openedx.features.journals.views.learner_dashboard import get_journal_about_page_url, format_expiration_date, has_access_expired from openedx.features.journals.views.learner_dashboard import format_expiration_date, has_access_expired
from openedx.features.journals.api import get_journal_about_page_url
%> %>
<%block name="pagetitle">${_("Journal Dashboard")}</%block> <%block name="pagetitle">${_("Journal Dashboard")}</%block>
@@ -57,7 +58,7 @@ banner.showMessage(${redirect_message | n, dump_js_escaped_json})
<ul class="listing-courses"> <ul class="listing-courses">
% for journal in journals: % for journal in journals:
<% <%
about_page_url = get_journal_about_page_url(slug=journal['journal']['journalaboutpage']['slug']) about_page_url = get_journal_about_page_url(about_page_id=journal['journal']['journalaboutpage']['id'])
formatted_expiration_date = format_expiration_date(journal['expiration_date']) formatted_expiration_date = format_expiration_date(journal['expiration_date'])
access_expired = has_access_expired(journal['expiration_date']) access_expired = has_access_expired(journal['expiration_date'])
%> %>

View File

@@ -37,7 +37,7 @@ def get_mocked_journal_access():
"name": "dummy-name1", "name": "dummy-name1",
"organization": "edx", "organization": "edx",
"journalaboutpage": { "journalaboutpage": {
"slug": "dummy-slug1", "id": "5",
"card_image_absolute_url": "dummy-url" "card_image_absolute_url": "dummy-url"
} }
} }
@@ -49,7 +49,7 @@ def get_mocked_journal_access():
"name": "dummy-name2", "name": "dummy-name2",
"organization": "edx", "organization": "edx",
"journalaboutpage": { "journalaboutpage": {
"slug": "dummy-slug2", "id": "5",
"card_image_absolute_url": "dummy-url" "card_image_absolute_url": "dummy-url"
} }
} }
@@ -71,7 +71,7 @@ def get_mocked_journal_bundles():
"title": "dummy-title", "title": "dummy-title",
"sku": "ASZ1GZ", "sku": "ASZ1GZ",
"card_image_url": "dummy-url", "card_image_url": "dummy-url",
"slug": "dummy-title", "about_page_id": "5",
"access_length": "8 weeks", "access_length": "8 weeks",
"short_description": "dummy short description" "short_description": "dummy short description"
} }
@@ -111,14 +111,14 @@ def get_mocked_journals():
{ {
"title": "dummy-title1", "title": "dummy-title1",
"card_image_url": "dummy-url1", "card_image_url": "dummy-url1",
"slug": "dummy-title1", "about_page_id": "5",
"access_length": 60, "access_length": 60,
"organization": "edx" "organization": "edx"
}, },
{ {
"title": "dummy-title2", "title": "dummy-title2",
"card_image_url": "dummy-url2", "card_image_url": "dummy-url2",
"slug": "dummy-title2", "about_page_id": "5",
"access_length": 60, "access_length": 60,
"organization": "edx" "organization": "edx"
} }

View File

@@ -1,14 +1,15 @@
""" Journal Tab of Learner Dashboard views """ """ Journal Tab of Learner Dashboard views """
from datetime import datetime, time from datetime import datetime, time
import logging import logging
from urlparse import urljoin, urlsplit, urlunsplit
from django.conf import settings
from django.http import Http404 from django.http import Http404
from edxmako.shortcuts import render_to_response from edxmako.shortcuts import render_to_response
from openedx.core.djangoapps.programs.models import ProgramsApiConfig from openedx.core.djangoapps.programs.models import ProgramsApiConfig
from openedx.features.journals.api import fetch_journal_access, journals_enabled from openedx.features.journals.api import (
fetch_journal_access,
journals_enabled,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -37,34 +38,6 @@ def journal_listing(request):
return render_to_response('journals/learner_dashboard/journal_dashboard.html', context) return render_to_response('journals/learner_dashboard/journal_dashboard.html', context)
def get_journal_about_page_url(slug=''):
"""
Return url to journal about page.
The url will redirect through the journals service log in page. Otherwise the user may be
sent to a page to purchase the book - and that is an awkward user experience.
Arguments:
slug (str): unique string associated with each journal about page
Returns:
url (str): url points to Journals Service login, w/ a redirect to journal about page
"""
login_url = urljoin(settings.JOURNALS_URL_ROOT, 'login')
about_page_url = urljoin(settings.JOURNALS_URL_ROOT, slug)
query = 'next={next_url}'.format(next_url=about_page_url)
split_url = urlsplit(login_url)
url = urlunsplit((
split_url.scheme,
split_url.netloc,
split_url.path,
query,
split_url.fragment,
))
return url
def format_expiration_date(expiration_date): def format_expiration_date(expiration_date):
""" """
Formats Expiration Date Formats Expiration Date

136
package-lock.json generated
View File

@@ -214,7 +214,7 @@
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
}, },
"accepts": { "accepts": {
"version": "1.3.3", "version": "1.3.3",
@@ -400,7 +400,7 @@
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
}, },
"are-we-there-yet": { "are-we-there-yet": {
"version": "1.1.4", "version": "1.1.4",
@@ -468,7 +468,7 @@
"arr-flatten": { "arr-flatten": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
"integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
}, },
"arr-union": { "arr-union": {
"version": "3.1.0", "version": "3.1.0",
@@ -1482,7 +1482,7 @@
"babylon": { "babylon": {
"version": "6.18.0", "version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=" "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
}, },
"backbone": { "backbone": {
"version": "1.3.3", "version": "1.3.3",
@@ -1687,7 +1687,7 @@
"bn.js": { "bn.js": {
"version": "4.11.8", "version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
}, },
"body-parser": { "body-parser": {
"version": "1.18.2", "version": "1.18.2",
@@ -1850,7 +1850,7 @@
"browserify-zlib": { "browserify-zlib": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
"integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
"requires": { "requires": {
"pako": "1.0.6" "pako": "1.0.6"
} }
@@ -2141,7 +2141,7 @@
"cipher-base": { "cipher-base": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"requires": { "requires": {
"inherits": "2.0.3", "inherits": "2.0.3",
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
@@ -2162,7 +2162,7 @@
"clap": { "clap": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
"integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
"requires": { "requires": {
"chalk": "1.1.3" "chalk": "1.1.3"
}, },
@@ -2360,7 +2360,7 @@
"color-convert": { "color-convert": {
"version": "1.9.1", "version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
"integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"requires": { "requires": {
"color-name": "1.1.3" "color-name": "1.1.3"
} }
@@ -2527,7 +2527,7 @@
"content-type": { "content-type": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true "dev": true
}, },
"convert-source-map": { "convert-source-map": {
@@ -2567,7 +2567,7 @@
"cosmiconfig": { "cosmiconfig": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz",
"integrity": "sha1-ZAqUv5hH8yGABAPNJzr2BmXHM5c=", "integrity": "sha512-zedsBhLSbPBms+kE7AH4vHg6JsKDz6epSv2/+5XHs8ILHlgDciSJfSWf8sX9aQ52Jb7KI7VswUTsLpR/G0cr2Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-directory": "0.3.1", "is-directory": "0.3.1",
@@ -2579,7 +2579,7 @@
"esprima": { "esprima": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
"integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=", "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true "dev": true
}, },
"js-yaml": { "js-yaml": {
@@ -2666,7 +2666,7 @@
"crypto-browserify": { "crypto-browserify": {
"version": "3.12.0", "version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"requires": { "requires": {
"browserify-cipher": "1.0.0", "browserify-cipher": "1.0.0",
"browserify-sign": "4.0.4", "browserify-sign": "4.0.4",
@@ -2912,7 +2912,7 @@
"debug": { "debug": {
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@@ -3390,7 +3390,7 @@
"emoji-regex": { "emoji-regex": {
"version": "6.5.1", "version": "6.5.1",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
"integrity": "sha1-m66pKbFVVlwR6kHGYm6qZc75ksI=", "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==",
"dev": true "dev": true
}, },
"emojis-list": { "emojis-list": {
@@ -3919,7 +3919,7 @@
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-fullwidth-code-point": "2.0.0", "is-fullwidth-code-point": "2.0.0",
@@ -3977,7 +3977,7 @@
"eslint-config-airbnb-base": { "eslint-config-airbnb-base": {
"version": "11.3.2", "version": "11.3.2",
"resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz",
"integrity": "sha1-hwOxGr48iKx+wrdFt/31LgCuaAo=", "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==",
"dev": true, "dev": true,
"requires": { "requires": {
"eslint-restricted-globals": "0.1.1" "eslint-restricted-globals": "0.1.1"
@@ -4275,7 +4275,7 @@
"evp_bytestokey": { "evp_bytestokey": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"requires": { "requires": {
"md5.js": "1.3.4", "md5.js": "1.3.4",
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
@@ -4482,7 +4482,7 @@
"async": { "async": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"requires": { "requires": {
"lodash": "4.17.5" "lodash": "4.17.5"
} }
@@ -4859,7 +4859,7 @@
"function-bind": { "function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"function.prototype.name": { "function.prototype.name": {
"version": "1.1.0", "version": "1.1.0",
@@ -4947,7 +4947,7 @@
"glob": { "glob": {
"version": "7.1.2", "version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": { "requires": {
"fs.realpath": "1.0.0", "fs.realpath": "1.0.0",
"inflight": "1.0.6", "inflight": "1.0.6",
@@ -4977,7 +4977,7 @@
"globals": { "globals": {
"version": "9.18.0", "version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
}, },
"globby": { "globby": {
"version": "7.1.1", "version": "7.1.1",
@@ -5525,7 +5525,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
} }
} }
}, },
@@ -5537,7 +5537,7 @@
"ignore": { "ignore": {
"version": "3.3.7", "version": "3.3.7",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
"integrity": "sha1-YSKJv7PCIOGGpYEYYY1b6MG6sCE=", "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
"dev": true "dev": true
}, },
"import-local": { "import-local": {
@@ -5806,7 +5806,7 @@
"is-buffer": { "is-buffer": {
"version": "1.1.6", "version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
}, },
"is-builtin-module": { "is-builtin-module": {
"version": "1.0.0", "version": "1.0.0",
@@ -6003,7 +6003,7 @@
"is-plain-object": { "is-plain-object": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"requires": { "requires": {
"isobject": "3.0.1" "isobject": "3.0.1"
} }
@@ -8163,7 +8163,7 @@
"string_decoder": { "string_decoder": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": { "requires": {
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
} }
@@ -8308,7 +8308,7 @@
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": { "requires": {
"brace-expansion": "1.1.11" "brace-expansion": "1.1.11"
} }
@@ -8494,7 +8494,7 @@
"node-fetch": { "node-fetch": {
"version": "1.7.3", "version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": { "requires": {
"encoding": "0.1.12", "encoding": "0.1.12",
"is-stream": "1.1.0" "is-stream": "1.1.0"
@@ -8536,7 +8536,7 @@
"node-libs-browser": { "node-libs-browser": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
"integrity": "sha1-X5QmPUBPbkR2fXJpAf/wVHjWAN8=", "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
"requires": { "requires": {
"assert": "1.4.1", "assert": "1.4.1",
"browserify-zlib": "0.2.0", "browserify-zlib": "0.2.0",
@@ -8707,7 +8707,7 @@
"normalize-package-data": { "normalize-package-data": {
"version": "2.4.0", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"requires": { "requires": {
"hosted-git-info": "2.5.0", "hosted-git-info": "2.5.0",
"is-builtin-module": "1.0.0", "is-builtin-module": "1.0.0",
@@ -9135,7 +9135,7 @@
"pako": { "pako": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
"integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg=" "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
}, },
"parse-asn1": { "parse-asn1": {
"version": "5.1.0", "version": "5.1.0",
@@ -9288,7 +9288,7 @@
"pbkdf2": { "pbkdf2": {
"version": "3.0.14", "version": "3.0.14",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
"integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
"requires": { "requires": {
"create-hash": "1.1.3", "create-hash": "1.1.3",
"create-hmac": "1.1.6", "create-hmac": "1.1.6",
@@ -9722,7 +9722,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
} }
} }
}, },
@@ -9810,7 +9810,7 @@
"postcss-reporter": { "postcss-reporter": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz",
"integrity": "sha1-oUF3/RNCgp0pFlPyeG79ZxEDMsM=", "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==",
"dev": true, "dev": true,
"requires": { "requires": {
"chalk": "2.3.1", "chalk": "2.3.1",
@@ -9833,7 +9833,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
} }
} }
@@ -9896,7 +9896,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
} }
} }
@@ -10012,7 +10012,7 @@
"private": { "private": {
"version": "0.1.8", "version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
"integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=" "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
}, },
"process": { "process": {
"version": "0.11.10", "version": "0.11.10",
@@ -10033,7 +10033,7 @@
"promise": { "promise": {
"version": "7.3.1", "version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": { "requires": {
"asap": "2.0.6" "asap": "2.0.6"
} }
@@ -10168,7 +10168,7 @@
"randomatic": { "randomatic": {
"version": "1.1.7", "version": "1.1.7",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
"integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"requires": { "requires": {
"is-number": "3.0.0", "is-number": "3.0.0",
"kind-of": "4.0.0" "kind-of": "4.0.0"
@@ -10504,7 +10504,7 @@
"string_decoder": { "string_decoder": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": { "requires": {
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
} }
@@ -10584,7 +10584,7 @@
"redux": { "redux": {
"version": "3.7.2", "version": "3.7.2",
"resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
"integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=", "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
"requires": { "requires": {
"lodash": "4.17.5", "lodash": "4.17.5",
"lodash-es": "4.17.6", "lodash-es": "4.17.6",
@@ -10620,7 +10620,7 @@
"regenerator-transform": { "regenerator-transform": {
"version": "0.10.1", "version": "0.10.1",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
"integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
"requires": { "requires": {
"babel-runtime": "6.26.0", "babel-runtime": "6.26.0",
"babel-types": "6.26.0", "babel-types": "6.26.0",
@@ -10964,7 +10964,7 @@
"rtlcss": { "rtlcss": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.2.1.tgz", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.2.1.tgz",
"integrity": "sha1-+FN+QVUggWawXhiYAhMZNvzv0p4=", "integrity": "sha512-JjQ5DlrmwiItAjlmhoxrJq5ihgZcE0wMFxt7S17bIrt4Lw0WwKKFk+viRhvodB/0falyG/5fiO043ZDh6/aqTw==",
"requires": { "requires": {
"chalk": "2.3.1", "chalk": "2.3.1",
"findup": "0.1.5", "findup": "0.1.5",
@@ -10986,7 +10986,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
} }
} }
}, },
@@ -11008,7 +11008,7 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
}, },
"safe-regex": { "safe-regex": {
"version": "1.1.0", "version": "1.1.0",
@@ -11340,7 +11340,7 @@
"sass-loader": { "sass-loader": {
"version": "6.0.6", "version": "6.0.6",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz",
"integrity": "sha1-6dXmwfFV+qMqSybXqbcQfCJeQPk=", "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",
"requires": { "requires": {
"async": "2.6.0", "async": "2.6.0",
"clone-deep": "0.3.0", "clone-deep": "0.3.0",
@@ -11352,7 +11352,7 @@
"async": { "async": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"requires": { "requires": {
"lodash": "4.17.5" "lodash": "4.17.5"
} }
@@ -11614,7 +11614,7 @@
"slice-ansi": { "slice-ansi": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
"integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-fullwidth-code-point": "2.0.0" "is-fullwidth-code-point": "2.0.0"
@@ -11890,7 +11890,7 @@
"source-list-map": { "source-list-map": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
"integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=" "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A=="
}, },
"source-map": { "source-map": {
"version": "0.5.7", "version": "0.5.7",
@@ -11960,7 +11960,7 @@
"specificity": { "specificity": {
"version": "0.3.2", "version": "0.3.2",
"resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz",
"integrity": "sha1-meZRHs7vD42bV5JJN6rCyxPRPEI=", "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==",
"dev": true "dev": true
}, },
"split-string": { "split-string": {
@@ -12118,7 +12118,7 @@
"string_decoder": { "string_decoder": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": { "requires": {
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
} }
@@ -12336,7 +12336,7 @@
"style-loader": { "style-loader": {
"version": "0.18.2", "version": "0.18.2",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz",
"integrity": "sha1-zDFFmvvNbYC3Ig7lSykan9Zv9es=", "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==",
"requires": { "requires": {
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"schema-utils": "0.3.0" "schema-utils": "0.3.0"
@@ -12447,7 +12447,7 @@
"debug": { "debug": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true, "dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
@@ -12602,13 +12602,13 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
}, },
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-fullwidth-code-point": "2.0.0", "is-fullwidth-code-point": "2.0.0",
@@ -12653,7 +12653,7 @@
"stylelint-config-recommended-scss": { "stylelint-config-recommended-scss": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-2.0.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-2.0.0.tgz",
"integrity": "sha1-P0SzOK+zv1tr2e663UaO7ydxOSI=", "integrity": "sha512-DUIW3daRl5EAyU4ZR6xfPa+bqV5wDccS7X1je6Enes9edpbmWUBR/5XLfDPnjMJgqOe2QwqwaE/qnG4lXID9rg==",
"dev": true, "dev": true,
"requires": { "requires": {
"stylelint-config-recommended": "1.0.0" "stylelint-config-recommended": "1.0.0"
@@ -12662,7 +12662,7 @@
"stylelint-config-standard": { "stylelint-config-standard": {
"version": "17.0.0", "version": "17.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-17.0.0.tgz", "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-17.0.0.tgz",
"integrity": "sha1-QhA6CQBU7io93p7K7VXl1NnQWfw=", "integrity": "sha512-G8jMZ0KsaVH7leur9XLZVhwOBHZ2vdbuJV8Bgy0ta7/PpBhEHo6fjVDaNchyCGXB5sRcWVq6O9rEU/MvY9cQDQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"stylelint-config-recommended": "1.0.0" "stylelint-config-recommended": "1.0.0"
@@ -12671,7 +12671,7 @@
"stylelint-formatter-pretty": { "stylelint-formatter-pretty": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-1.0.3.tgz", "resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-1.0.3.tgz",
"integrity": "sha1-prQ8PzoTIGvft3fQ2ozvxsdsNsM=", "integrity": "sha512-Jg39kL6kkjUrdKIiHwwz/fbElcF5dOS48ZhvGrEJeWijUbmY1yudclfXv9H61eBqKKu0E33nfez2r0G4EvPtFA==",
"dev": true, "dev": true,
"requires": { "requires": {
"ansi-escapes": "2.0.0", "ansi-escapes": "2.0.0",
@@ -12730,7 +12730,7 @@
"string-width": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-fullwidth-code-point": "2.0.0", "is-fullwidth-code-point": "2.0.0",
@@ -12785,7 +12785,7 @@
"sugarss": { "sugarss": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz",
"integrity": "sha1-voJtkAPg8kdzX5I2XcP9fxuunkQ=", "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==",
"dev": true, "dev": true,
"requires": { "requires": {
"postcss": "6.0.19" "postcss": "6.0.19"
@@ -12805,7 +12805,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
} }
} }
@@ -13276,7 +13276,7 @@
"string_decoder": { "string_decoder": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": { "requires": {
"safe-buffer": "5.1.1" "safe-buffer": "5.1.1"
} }
@@ -13299,7 +13299,7 @@
"tmp": { "tmp": {
"version": "0.0.33", "version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true, "dev": true,
"requires": { "requires": {
"os-tmpdir": "1.0.2" "os-tmpdir": "1.0.2"
@@ -14228,7 +14228,7 @@
"webpack-merge": { "webpack-merge": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz",
"integrity": "sha1-8Rl6Cpc+acb77rbWWCGaqMDBNVU=", "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==",
"requires": { "requires": {
"lodash": "4.17.5" "lodash": "4.17.5"
} }
@@ -14245,7 +14245,7 @@
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
} }
} }
}, },
@@ -14310,7 +14310,7 @@
"wide-align": { "wide-align": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
"integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"requires": { "requires": {
"string-width": "1.0.2" "string-width": "1.0.2"
} }
@@ -14396,7 +14396,7 @@
"xml2js": { "xml2js": {
"version": "0.4.19", "version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"sax": "1.2.4", "sax": "1.2.4",