summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-05-18 09:28:18 -0400
committerGitHub <noreply@github.com>2017-05-18 09:28:18 -0400
commit2bbedd9def2a782f370fb5280994ea0ecbf8a7c7 (patch)
treec97936580a81c561aa9884d1c414c54bd49d401a
parent63e599c43b66f0dd95f7f07c783c40fdaf89e3fb (diff)
downloadchat-2bbedd9def2a782f370fb5280994ea0ecbf8a7c7.tar.gz
chat-2bbedd9def2a782f370fb5280994ea0ecbf8a7c7.tar.bz2
chat-2bbedd9def2a782f370fb5280994ea0ecbf8a7c7.zip
Updating client dependencies. Switching to yarn. (#6433)
* Updating client dependancies. Switching to using yarn. * Updating React * Moving pure components to using function syntax (performance gains with newer react version) * Updating client dependancies. * Ignore .yarninstall * Enabling pre-lockfile because it's the entire point of using yarn. * Removing old webpack config * Moving to new prop-types * Fixing ESLint Errors * Updating jest snapshots. * Cleaning up package.json
-rw-r--r--.gitignore1
-rw-r--r--webapp/Makefile26
-rw-r--r--webapp/components/about_build_modal.jsx6
-rw-r--r--webapp/components/access_history_modal/access_history_modal.jsx7
-rw-r--r--webapp/components/activity_log_modal/activity_log_modal.jsx9
-rw-r--r--webapp/components/add_users_to_team/add_users_to_team.jsx8
-rw-r--r--webapp/components/admin_console/admin_console.jsx4
-rw-r--r--webapp/components/admin_console/admin_settings.jsx4
-rw-r--r--webapp/components/admin_console/admin_sidebar.jsx3
-rw-r--r--webapp/components/admin_console/admin_sidebar_category.jsx18
-rw-r--r--webapp/components/admin_console/admin_sidebar_section.jsx18
-rw-r--r--webapp/components/admin_console/banner.jsx50
-rw-r--r--webapp/components/admin_console/boolean_setting.jsx20
-rw-r--r--webapp/components/admin_console/brand_image_setting.jsx3
-rw-r--r--webapp/components/admin_console/cluster_table.jsx6
-rw-r--r--webapp/components/admin_console/connection_security_dropdown_setting.jsx152
-rw-r--r--webapp/components/admin_console/dropdown_setting.jsx16
-rw-r--r--webapp/components/admin_console/email_connection_test.jsx8
-rw-r--r--webapp/components/admin_console/file_upload_setting.jsx17
-rw-r--r--webapp/components/admin_console/generated_setting.jsx20
-rw-r--r--webapp/components/admin_console/ldap_test_button.jsx8
-rw-r--r--webapp/components/admin_console/license_settings.jsx4
-rw-r--r--webapp/components/admin_console/manage_teams_modal/manage_teams_dropdown.jsx12
-rw-r--r--webapp/components/admin_console/manage_teams_modal/manage_teams_modal.jsx8
-rw-r--r--webapp/components/admin_console/manage_teams_modal/remove_from_team_button.jsx10
-rw-r--r--webapp/components/admin_console/multiselect_settings.jsx24
-rw-r--r--webapp/components/admin_console/post_edit_setting.jsx18
-rw-r--r--webapp/components/admin_console/radio_setting.jsx16
-rw-r--r--webapp/components/admin_console/remove_file_setting.jsx17
-rw-r--r--webapp/components/admin_console/reset_password_modal.jsx10
-rw-r--r--webapp/components/admin_console/save_button.jsx6
-rw-r--r--webapp/components/admin_console/setting.jsx42
-rw-r--r--webapp/components/admin_console/settings_group.jsx8
-rw-r--r--webapp/components/admin_console/sync_now_button.jsx4
-rw-r--r--webapp/components/admin_console/system_users/system_users.jsx10
-rw-r--r--webapp/components/admin_console/system_users/system_users_dropdown.jsx8
-rw-r--r--webapp/components/admin_console/system_users/system_users_list.jsx24
-rw-r--r--webapp/components/admin_console/text_setting.jsx24
-rw-r--r--webapp/components/admin_console/webserver_mode_dropdown_setting.jsx52
-rw-r--r--webapp/components/analytics/doughnut_chart.jsx12
-rw-r--r--webapp/components/analytics/line_chart.jsx12
-rw-r--r--webapp/components/analytics/statistic_count.jsx42
-rw-r--r--webapp/components/analytics/table_chart.jsx90
-rw-r--r--webapp/components/analytics/team_analytics/team_analytics.jsx6
-rw-r--r--webapp/components/audio_video_preview.jsx6
-rw-r--r--webapp/components/audit_table.jsx208
-rw-r--r--webapp/components/authorize.jsx5
-rw-r--r--webapp/components/autosize_textarea.jsx8
-rw-r--r--webapp/components/backstage/backstage_controller.jsx6
-rw-r--r--webapp/components/backstage/components/backstage_category.jsx14
-rw-r--r--webapp/components/backstage/components/backstage_header.jsx4
-rw-r--r--webapp/components/backstage/components/backstage_list.jsx18
-rw-r--r--webapp/components/backstage/components/backstage_navbar.jsx4
-rw-r--r--webapp/components/backstage/components/backstage_section.jsx14
-rw-r--r--webapp/components/backstage/components/backstage_sidebar.jsx6
-rw-r--r--webapp/components/change_url_modal.jsx18
-rw-r--r--webapp/components/channel_header.jsx4
-rw-r--r--webapp/components/channel_info_modal.jsx6
-rw-r--r--webapp/components/channel_invite_button.jsx8
-rw-r--r--webapp/components/channel_invite_modal/channel_invite_modal.jsx12
-rw-r--r--webapp/components/channel_members_dropdown/channel_members_dropdown.jsx14
-rw-r--r--webapp/components/channel_members_modal.jsx8
-rw-r--r--webapp/components/channel_notifications_modal.jsx9
-rw-r--r--webapp/components/channel_select.jsx12
-rw-r--r--webapp/components/channel_switch_modal.jsx6
-rw-r--r--webapp/components/channel_view.jsx3
-rw-r--r--webapp/components/claim/claim_controller.jsx6
-rw-r--r--webapp/components/claim/components/email_to_ldap.jsx4
-rw-r--r--webapp/components/claim/components/email_to_oauth.jsx6
-rw-r--r--webapp/components/claim/components/ldap_to_email.jsx4
-rw-r--r--webapp/components/claim/components/oauth_to_email.jsx6
-rw-r--r--webapp/components/code_preview.jsx5
-rw-r--r--webapp/components/common/comment_icon.jsx12
-rw-r--r--webapp/components/common/post_flag_icon.jsx12
-rw-r--r--webapp/components/confirm_modal.jsx16
-rw-r--r--webapp/components/create_comment.jsx7
-rw-r--r--webapp/components/create_team/components/display_name.jsx6
-rw-r--r--webapp/components/create_team/components/team_url.jsx6
-rw-r--r--webapp/components/create_team/create_team_controller.jsx4
-rw-r--r--webapp/components/delete_channel_modal.jsx6
-rw-r--r--webapp/components/delete_modal_trigger.jsx3
-rw-r--r--webapp/components/do_verify_email.jsx4
-rw-r--r--webapp/components/edit_channel_header_modal.jsx6
-rw-r--r--webapp/components/edit_channel_purpose_modal.jsx6
-rw-r--r--webapp/components/emoji/components/add_emoji.jsx8
-rw-r--r--webapp/components/emoji/components/delete_emoji_modal.jsx3
-rw-r--r--webapp/components/emoji/components/emoji_list.jsx6
-rw-r--r--webapp/components/emoji/components/emoji_list_item.jsx10
-rw-r--r--webapp/components/emoji_picker/components/emoji_picker_category.jsx10
-rw-r--r--webapp/components/emoji_picker/components/emoji_picker_item.jsx14
-rw-r--r--webapp/components/emoji_picker/components/emoji_picker_preview.jsx4
-rw-r--r--webapp/components/emoji_picker/emoji_picker.jsx12
-rw-r--r--webapp/components/emoji_picker/emoji_picker_container.jsx4
-rw-r--r--webapp/components/error_page.jsx3
-rw-r--r--webapp/components/file_attachment.jsx10
-rw-r--r--webapp/components/file_attachment_list.jsx8
-rw-r--r--webapp/components/file_attachment_list_container.jsx6
-rw-r--r--webapp/components/file_info_preview.jsx6
-rw-r--r--webapp/components/file_preview.jsx8
-rw-r--r--webapp/components/file_upload.jsx28
-rw-r--r--webapp/components/file_upload_overlay.jsx64
-rw-r--r--webapp/components/filtered_user_list.jsx14
-rw-r--r--webapp/components/form_error.jsx10
-rw-r--r--webapp/components/get_android_app/get_android_app.jsx118
-rw-r--r--webapp/components/get_ios_app/get_ios_app.jsx108
-rw-r--r--webapp/components/get_link_modal.jsx12
-rw-r--r--webapp/components/header_footer_template.jsx4
-rw-r--r--webapp/components/help/components/attaching.jsx144
-rw-r--r--webapp/components/help/components/commands.jsx130
-rw-r--r--webapp/components/help/components/composing.jsx130
-rw-r--r--webapp/components/help/components/formatting.jsx242
-rw-r--r--webapp/components/help/components/mentioning.jsx134
-rw-r--r--webapp/components/help/components/messaging.jsx132
-rw-r--r--webapp/components/help/help_controller.jsx4
-rw-r--r--webapp/components/integrations/components/abstract_incoming_webhook.jsx4
-rw-r--r--webapp/components/integrations/components/abstract_outgoing_webhook.jsx4
-rw-r--r--webapp/components/integrations/components/add_command.jsx4
-rw-r--r--webapp/components/integrations/components/add_oauth_app.jsx4
-rw-r--r--webapp/components/integrations/components/commands_container.jsx10
-rw-r--r--webapp/components/integrations/components/confirm_integration.jsx8
-rw-r--r--webapp/components/integrations/components/delete_integration.jsx5
-rw-r--r--webapp/components/integrations/components/edit_command.jsx6
-rw-r--r--webapp/components/integrations/components/installed_command.jsx16
-rw-r--r--webapp/components/integrations/components/installed_commands.jsx14
-rw-r--r--webapp/components/integrations/components/installed_incoming_webhook.jsx14
-rw-r--r--webapp/components/integrations/components/installed_incoming_webhooks.jsx8
-rw-r--r--webapp/components/integrations/components/installed_oauth_app.jsx8
-rw-r--r--webapp/components/integrations/components/installed_oauth_apps.jsx4
-rw-r--r--webapp/components/integrations/components/installed_outgoing_webhook.jsx16
-rw-r--r--webapp/components/integrations/components/installed_outgoing_webhooks.jsx8
-rw-r--r--webapp/components/integrations/components/integration_option.jsx10
-rw-r--r--webapp/components/integrations/components/integrations.jsx6
-rw-r--r--webapp/components/loading_screen.jsx6
-rw-r--r--webapp/components/logged_in.jsx3
-rw-r--r--webapp/components/login/components/login_mfa.jsx8
-rw-r--r--webapp/components/login/login_controller.jsx6
-rw-r--r--webapp/components/member_list_channel/member_list_channel.jsx8
-rw-r--r--webapp/components/member_list_team/member_list_team.jsx8
-rw-r--r--webapp/components/message_wrapper.jsx6
-rw-r--r--webapp/components/mfa/mfa_controller.jsx6
-rw-r--r--webapp/components/more_channels/more_channels.jsx10
-rw-r--r--webapp/components/more_direct_channels/more_direct_channels.jsx12
-rw-r--r--webapp/components/msg_typing.jsx6
-rw-r--r--webapp/components/multiselect/multiselect.jsx30
-rw-r--r--webapp/components/multiselect/multiselect_list.jsx16
-rw-r--r--webapp/components/navbar.jsx4
-rw-r--r--webapp/components/needs_team/needs_team.jsx26
-rw-r--r--webapp/components/new_channel_flow.jsx8
-rw-r--r--webapp/components/password_reset_form.jsx6
-rw-r--r--webapp/components/password_reset_send_link.jsx4
-rw-r--r--webapp/components/pdf_preview.jsx6
-rw-r--r--webapp/components/permalink_view.jsx3
-rw-r--r--webapp/components/popover_list_members/popover_list_members.jsx11
-rw-r--r--webapp/components/post_deleted_modal.jsx6
-rw-r--r--webapp/components/post_view/components/commented_on_files_message_container.jsx6
-rw-r--r--webapp/components/post_view/components/date_separator.jsx37
-rw-r--r--webapp/components/post_view/components/floating_timestamp.jsx10
-rw-r--r--webapp/components/post_view/components/new_message_indicator.jsx6
-rw-r--r--webapp/components/post_view/components/pending_post_options.jsx4
-rw-r--r--webapp/components/post_view/components/post.jsx4
-rw-r--r--webapp/components/post_view/components/post_attachment.jsx4
-rw-r--r--webapp/components/post_view/components/post_attachment_list.jsx36
-rw-r--r--webapp/components/post_view/components/post_attachment_opengraph.jsx8
-rw-r--r--webapp/components/post_view/components/post_body.jsx22
-rw-r--r--webapp/components/post_view/components/post_body_additional_content.jsx12
-rw-r--r--webapp/components/post_view/components/post_header.jsx32
-rw-r--r--webapp/components/post_view/components/post_image.jsx6
-rw-r--r--webapp/components/post_view/components/post_info.jsx24
-rw-r--r--webapp/components/post_view/components/post_list.jsx46
-rw-r--r--webapp/components/post_view/components/post_message_container.jsx8
-rw-r--r--webapp/components/post_view/components/post_message_view.jsx20
-rw-r--r--webapp/components/post_view/components/post_time.jsx12
-rw-r--r--webapp/components/post_view/components/reaction.jsx24
-rw-r--r--webapp/components/post_view/components/reaction_container.jsx10
-rw-r--r--webapp/components/post_view/components/reaction_list_container.jsx4
-rw-r--r--webapp/components/post_view/components/reaction_list_view.jsx8
-rw-r--r--webapp/components/post_view/components/scroll_to_bottom_arrows.jsx46
-rw-r--r--webapp/components/post_view/post_view_cache.jsx6
-rw-r--r--webapp/components/post_view/post_view_controller.jsx6
-rw-r--r--webapp/components/profile_picture.jsx14
-rw-r--r--webapp/components/profile_popover.jsx11
-rw-r--r--webapp/components/rename_channel_modal.jsx8
-rw-r--r--webapp/components/rhs_comment.jsx20
-rw-r--r--webapp/components/rhs_dropdown.jsx4
-rw-r--r--webapp/components/rhs_dropdown_button.jsx4
-rw-r--r--webapp/components/rhs_header_post.jsx16
-rw-r--r--webapp/components/rhs_root_post.jsx24
-rw-r--r--webapp/components/rhs_thread.jsx19
-rw-r--r--webapp/components/root.jsx4
-rw-r--r--webapp/components/search_bar.jsx8
-rw-r--r--webapp/components/search_results.jsx15
-rw-r--r--webapp/components/search_results_header.jsx14
-rw-r--r--webapp/components/search_results_item.jsx28
-rw-r--r--webapp/components/searchable_channel_list.jsx13
-rw-r--r--webapp/components/searchable_user_list/searchable_user_list.jsx35
-rw-r--r--webapp/components/searchable_user_list/searchable_user_list_container.jsx22
-rw-r--r--webapp/components/select_team/components/select_team_item.jsx10
-rw-r--r--webapp/components/select_team/select_team.jsx6
-rw-r--r--webapp/components/setting_item_max.jsx20
-rw-r--r--webapp/components/setting_item_min.jsx78
-rw-r--r--webapp/components/setting_picture.jsx4
-rw-r--r--webapp/components/setting_upload.jsx14
-rw-r--r--webapp/components/settings_sidebar.jsx14
-rw-r--r--webapp/components/should_verify_email.jsx4
-rw-r--r--webapp/components/sidebar_header.jsx12
-rw-r--r--webapp/components/sidebar_header_dropdown.jsx10
-rw-r--r--webapp/components/sidebar_header_dropdown_button.jsx6
-rw-r--r--webapp/components/sidebar_right.jsx4
-rw-r--r--webapp/components/sidebar_right_menu.jsx6
-rw-r--r--webapp/components/signup/components/signup_email.jsx4
-rw-r--r--webapp/components/signup/components/signup_ldap.jsx4
-rw-r--r--webapp/components/signup/signup_controller.jsx4
-rw-r--r--webapp/components/spinner_button.jsx8
-rw-r--r--webapp/components/status_icon.jsx59
-rw-r--r--webapp/components/suggestion/suggestion.jsx12
-rw-r--r--webapp/components/suggestion/suggestion_box.jsx22
-rw-r--r--webapp/components/suggestion/suggestion_list.jsx8
-rw-r--r--webapp/components/team_general_tab.jsx8
-rw-r--r--webapp/components/team_members_dropdown/team_members_dropdown.jsx14
-rw-r--r--webapp/components/team_members_modal.jsx8
-rw-r--r--webapp/components/team_settings.jsx8
-rw-r--r--webapp/components/team_sidebar/components/team_button.jsx24
-rw-r--r--webapp/components/team_sidebar/team_sidebar_controller.jsx5
-rw-r--r--webapp/components/textbox.jsx28
-rw-r--r--webapp/components/toggle_modal_button.jsx10
-rw-r--r--webapp/components/tutorial/tutorial_intro_screens.jsx6
-rw-r--r--webapp/components/tutorial/tutorial_tip.jsx10
-rw-r--r--webapp/components/unread_channel_indicator.jsx34
-rw-r--r--webapp/components/user_list.jsx12
-rw-r--r--webapp/components/user_list_row.jsx14
-rw-r--r--webapp/components/user_profile.jsx16
-rw-r--r--webapp/components/user_settings/custom_theme_chooser.jsx5
-rw-r--r--webapp/components/user_settings/desktop_notification_settings.jsx20
-rw-r--r--webapp/components/user_settings/email_notification_setting.jsx14
-rw-r--r--webapp/components/user_settings/manage_languages.jsx5
-rw-r--r--webapp/components/user_settings/premade_theme_chooser.jsx6
-rw-r--r--webapp/components/user_settings/user_settings.jsx18
-rw-r--r--webapp/components/user_settings/user_settings_advanced.jsx14
-rw-r--r--webapp/components/user_settings/user_settings_display.jsx18
-rw-r--r--webapp/components/user_settings/user_settings_general/user_settings_general.jsx18
-rw-r--r--webapp/components/user_settings/user_settings_modal.jsx6
-rw-r--r--webapp/components/user_settings/user_settings_notifications.jsx16
-rw-r--r--webapp/components/user_settings/user_settings_security/user_settings_security.jsx19
-rw-r--r--webapp/components/user_settings/user_settings_theme.jsx10
-rw-r--r--webapp/components/view_image.jsx17
-rw-r--r--webapp/components/view_image_popover_bar.jsx14
-rw-r--r--webapp/components/webrtc/components/webrtc_header.jsx156
-rw-r--r--webapp/components/webrtc/webrtc_controller.jsx12
-rw-r--r--webapp/components/youtube_video.jsx8
-rw-r--r--webapp/package.json92
-rw-r--r--webapp/tests/components/__snapshots__/about_build_modal.test.jsx.snap10
-rw-r--r--webapp/tests/components/__snapshots__/new_channel_modal.test.jsx.snap15
-rw-r--r--webapp/webpack.config.js238
-rw-r--r--webapp/yarn.lock7929
254 files changed, 10711 insertions, 2224 deletions
diff --git a/.gitignore b/.gitignore
index 99c3a72f8..c70239a2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,7 @@ cmd/mattermost/imports.go
# Build Targets
.prebuild
.npminstall
+.yarninstall
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
diff --git a/webapp/Makefile b/webapp/Makefile
index 5e117989d..c274cafce 100644
--- a/webapp/Makefile
+++ b/webapp/Makefile
@@ -2,37 +2,37 @@
BUILD_SERVER_DIR = ..
-check-style: .npminstall
+check-style: .yarninstall
@echo Checking for style guide compliance
- npm run check
+ yarn run check
-test: .npminstall
+test: .yarninstall
cd $(BUILD_SERVER_DIR) && $(MAKE) internal-test-web-client
-.npminstall: package.json
- @echo Getting dependencies using npm
+.yarninstall: package.json
+ @echo Getting dependencies using yarn
- npm install
+ yarn install --pure-lockfile
touch $@
-build: .npminstall
+build: .yarninstall
@echo Building mattermost Webapp
rm -rf dist
- npm run build
+ yarn run build
-run: .npminstall
+run: .yarninstall
@echo Running mattermost Webapp for development
- npm run run &
+ yarn run run &
-run-fullmap: .npminstall
+run-fullmap: .yarninstall
@echo FULL SOURCE MAP Running mattermost Webapp for development FULL SOURCE MAP
- npm run run-fullmap &
+ yarn run run-fullmap &
stop:
@echo Stopping changes watching
@@ -51,4 +51,4 @@ clean:
rm -rf dist
rm -rf node_modules
- rm -f .npminstall
+ rm -f .yarninstall
diff --git a/webapp/components/about_build_modal.jsx b/webapp/components/about_build_modal.jsx
index 6fd2d8c03..923b86609 100644
--- a/webapp/components/about_build_modal.jsx
+++ b/webapp/components/about_build_modal.jsx
@@ -5,6 +5,8 @@ import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import Constants from 'utils/constants.jsx';
@@ -198,6 +200,6 @@ AboutBuildModal.defaultProps = {
};
AboutBuildModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- onModalDismissed: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ onModalDismissed: PropTypes.func.isRequired
};
diff --git a/webapp/components/access_history_modal/access_history_modal.jsx b/webapp/components/access_history_modal/access_history_modal.jsx
index da03fdb5b..fdd18669b 100644
--- a/webapp/components/access_history_modal/access_history_modal.jsx
+++ b/webapp/components/access_history_modal/access_history_modal.jsx
@@ -9,6 +9,7 @@ import UserStore from 'stores/user_store.jsx';
import * as Utils from 'utils/utils.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Modal} from 'react-bootstrap';
@@ -16,9 +17,9 @@ import {FormattedMessage} from 'react-intl';
export default class AccessHistoryModal extends React.Component {
static propTypes = {
- onHide: React.PropTypes.func.isRequired,
- actions: React.PropTypes.shape({
- getUserAudits: React.PropTypes.func.isRequired
+ onHide: PropTypes.func.isRequired,
+ actions: PropTypes.shape({
+ getUserAudits: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/activity_log_modal/activity_log_modal.jsx b/webapp/components/activity_log_modal/activity_log_modal.jsx
index c94909754..76f7bbf77 100644
--- a/webapp/components/activity_log_modal/activity_log_modal.jsx
+++ b/webapp/components/activity_log_modal/activity_log_modal.jsx
@@ -8,16 +8,17 @@ import UserStore from 'stores/user_store.jsx';
import * as Utils from 'utils/utils.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage, FormattedTime, FormattedDate} from 'react-intl';
export default class ActivityLogModal extends React.Component {
static propTypes = {
- onHide: React.PropTypes.func.isRequired,
- actions: React.PropTypes.shape({
- getSessions: React.PropTypes.func.isRequired,
- revokeSession: React.PropTypes.func.isRequired
+ onHide: PropTypes.func.isRequired,
+ actions: PropTypes.shape({
+ getSessions: PropTypes.func.isRequired,
+ revokeSession: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/add_users_to_team/add_users_to_team.jsx b/webapp/components/add_users_to_team/add_users_to_team.jsx
index ae6fd8c4e..ed1a2a29c 100644
--- a/webapp/components/add_users_to_team/add_users_to_team.jsx
+++ b/webapp/components/add_users_to_team/add_users_to_team.jsx
@@ -14,6 +14,8 @@ import Constants from 'utils/constants.jsx';
import {displayUsernameForUser} from 'utils/utils.jsx';
import Client from 'client/web_client.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -27,9 +29,9 @@ const MAX_SELECTABLE_VALUES = 20;
export default class AddUsersToTeam extends React.Component {
static propTypes = {
- onModalDismissed: React.PropTypes.func,
- actions: React.PropTypes.shape({
- getProfilesNotInTeam: React.PropTypes.func.isRequired
+ onModalDismissed: PropTypes.func,
+ actions: PropTypes.shape({
+ getProfilesNotInTeam: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/admin_console/admin_console.jsx b/webapp/components/admin_console/admin_console.jsx
index d00293f04..80d9bfed9 100644
--- a/webapp/components/admin_console/admin_console.jsx
+++ b/webapp/components/admin_console/admin_console.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,7 +15,7 @@ import AdminSidebar from './admin_sidebar.jsx';
export default class AdminConsole extends React.Component {
static get propTypes() {
return {
- children: React.PropTypes.node.isRequired
+ children: PropTypes.node.isRequired
};
}
diff --git a/webapp/components/admin_console/admin_settings.jsx b/webapp/components/admin_console/admin_settings.jsx
index b21a84c05..180e6e5b9 100644
--- a/webapp/components/admin_console/admin_settings.jsx
+++ b/webapp/components/admin_console/admin_settings.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,7 +15,7 @@ import {saveConfig} from 'actions/admin_actions.jsx';
export default class AdminSettings extends React.Component {
static get propTypes() {
return {
- config: React.PropTypes.object
+ config: PropTypes.object
};
}
diff --git a/webapp/components/admin_console/admin_sidebar.jsx b/webapp/components/admin_console/admin_sidebar.jsx
index a2f2b75c0..05924d02f 100644
--- a/webapp/components/admin_console/admin_sidebar.jsx
+++ b/webapp/components/admin_console/admin_sidebar.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -14,7 +15,7 @@ import AdminSidebarSection from './admin_sidebar_section.jsx';
export default class AdminSidebar extends React.Component {
static get contextTypes() {
return {
- router: React.PropTypes.object.isRequired
+ router: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/admin_console/admin_sidebar_category.jsx b/webapp/components/admin_console/admin_sidebar_category.jsx
index 97e2f7d5d..5db68e876 100644
--- a/webapp/components/admin_console/admin_sidebar_category.jsx
+++ b/webapp/components/admin_console/admin_sidebar_category.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,13 +10,13 @@ import {Link} from 'react-router/es6';
export default class AdminSidebarCategory extends React.Component {
static get propTypes() {
return {
- name: React.PropTypes.string,
- title: React.PropTypes.node.isRequired,
- icon: React.PropTypes.string.isRequired,
- sectionClass: React.PropTypes.string,
- parentLink: React.PropTypes.string,
- children: React.PropTypes.node,
- action: React.PropTypes.node
+ name: PropTypes.string,
+ title: PropTypes.node.isRequired,
+ icon: PropTypes.string.isRequired,
+ sectionClass: PropTypes.string,
+ parentLink: PropTypes.string,
+ children: PropTypes.node,
+ action: PropTypes.node
};
}
@@ -26,7 +28,7 @@ export default class AdminSidebarCategory extends React.Component {
static get contextTypes() {
return {
- router: React.PropTypes.object.isRequired
+ router: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/admin_console/admin_sidebar_section.jsx b/webapp/components/admin_console/admin_sidebar_section.jsx
index 53720ef98..e0f327da0 100644
--- a/webapp/components/admin_console/admin_sidebar_section.jsx
+++ b/webapp/components/admin_console/admin_sidebar_section.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,14 +11,14 @@ import * as Utils from 'utils/utils.jsx';
export default class AdminSidebarSection extends React.Component {
static get propTypes() {
return {
- name: React.PropTypes.string.isRequired,
- title: React.PropTypes.node.isRequired,
- type: React.PropTypes.string,
- parentLink: React.PropTypes.string,
- subsection: React.PropTypes.bool,
- children: React.PropTypes.arrayOf(React.PropTypes.element),
- action: React.PropTypes.node,
- onlyActiveOnIndex: React.PropTypes.bool
+ name: PropTypes.string.isRequired,
+ title: PropTypes.node.isRequired,
+ type: PropTypes.string,
+ parentLink: PropTypes.string,
+ subsection: PropTypes.bool,
+ children: PropTypes.arrayOf(PropTypes.element),
+ action: PropTypes.node,
+ onlyActiveOnIndex: PropTypes.bool
};
}
diff --git a/webapp/components/admin_console/banner.jsx b/webapp/components/admin_console/banner.jsx
index 964d070bc..452af92e1 100644
--- a/webapp/components/admin_console/banner.jsx
+++ b/webapp/components/admin_console/banner.jsx
@@ -1,40 +1,40 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
import {FormattedMessage} from 'react-intl';
-export default class Banner extends React.Component {
- render() {
- let title = (
- <FormattedMessage
- id='admin.banner.heading'
- defaultMessage='Note:'
- />
- );
+export default function Banner(props) {
+ let title = (
+ <FormattedMessage
+ id='admin.banner.heading'
+ defaultMessage='Note:'
+ />
+ );
- if (this.props.title) {
- title = this.props.title;
- }
+ if (props.title) {
+ title = props.title;
+ }
- return (
- <div className='banner'>
- <div className='banner__content'>
- <h4 className='banner__heading'>
- {title}
- </h4>
- <p>
- {this.props.description}
- </p>
- </div>
+ return (
+ <div className='banner'>
+ <div className='banner__content'>
+ <h4 className='banner__heading'>
+ {title}
+ </h4>
+ <p>
+ {props.description}
+ </p>
</div>
- );
- }
+ </div>
+ );
}
Banner.defaultProps = {
};
Banner.propTypes = {
- title: React.PropTypes.node,
- description: React.PropTypes.node.isRequired
+ title: PropTypes.node,
+ description: PropTypes.node.isRequired
};
diff --git a/webapp/components/admin_console/boolean_setting.jsx b/webapp/components/admin_console/boolean_setting.jsx
index aaceab7f3..45c23c869 100644
--- a/webapp/components/admin_console/boolean_setting.jsx
+++ b/webapp/components/admin_console/boolean_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -85,13 +87,13 @@ BooleanSetting.defaultProps = {
};
BooleanSetting.propTypes = {
- id: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- value: React.PropTypes.bool.isRequired,
- onChange: React.PropTypes.func.isRequired,
- trueText: React.PropTypes.node,
- falseText: React.PropTypes.node,
- disabled: React.PropTypes.bool.isRequired,
- disabledText: React.PropTypes.node,
- helpText: React.PropTypes.node.isRequired
+ id: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ value: PropTypes.bool.isRequired,
+ onChange: PropTypes.func.isRequired,
+ trueText: PropTypes.node,
+ falseText: PropTypes.node,
+ disabled: PropTypes.bool.isRequired,
+ disabledText: PropTypes.node,
+ helpText: PropTypes.node.isRequired
};
diff --git a/webapp/components/admin_console/brand_image_setting.jsx b/webapp/components/admin_console/brand_image_setting.jsx
index 4ceac1b91..eae5ad922 100644
--- a/webapp/components/admin_console/brand_image_setting.jsx
+++ b/webapp/components/admin_console/brand_image_setting.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
@@ -15,7 +16,7 @@ import {FormattedHTMLMessage, FormattedMessage} from 'react-intl';
export default class BrandImageSetting extends React.Component {
static get propTypes() {
return {
- disabled: React.PropTypes.bool.isRequired
+ disabled: PropTypes.bool.isRequired
};
}
diff --git a/webapp/components/admin_console/cluster_table.jsx b/webapp/components/admin_console/cluster_table.jsx
index b291387ea..542b1691d 100644
--- a/webapp/components/admin_console/cluster_table.jsx
+++ b/webapp/components/admin_console/cluster_table.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -11,8 +13,8 @@ import statusRed from 'images/status_red.png';
export default class ClusterTable extends React.Component {
static propTypes = {
- clusterInfos: React.PropTypes.array.isRequired,
- reload: React.PropTypes.func.isRequired
+ clusterInfos: PropTypes.array.isRequired,
+ reload: PropTypes.func.isRequired
}
render() {
diff --git a/webapp/components/admin_console/connection_security_dropdown_setting.jsx b/webapp/components/admin_console/connection_security_dropdown_setting.jsx
index 09cee0853..3a8e5f7fe 100644
--- a/webapp/components/admin_console/connection_security_dropdown_setting.jsx
+++ b/webapp/components/admin_console/connection_security_dropdown_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -114,101 +116,95 @@ const CONNECTION_SECURITY_HELP_TEXT_WEBSERVER = (
</table>
);
-export class ConnectionSecurityDropdownSettingEmail extends React.Component { //eslint-disable-line react/no-multi-comp
- render() {
- return (
- <DropdownSetting
- id='connectionSecurity'
- values={[
- {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
- {value: 'PLAIN', text: Utils.localizeMessage('admin.connectionSecurityPlain')},
- {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')},
- {value: 'STARTTLS', text: Utils.localizeMessage('admin.connectionSecurityStart')}
- ]}
- label={
- <FormattedMessage
- id='admin.connectionSecurityTitle'
- defaultMessage='Connection Security:'
- />
- }
- value={this.props.value}
- onChange={this.props.onChange}
- disabled={this.props.disabled}
- helpText={CONNECTION_SECURITY_HELP_TEXT_EMAIL}
- />
- );
- }
+export function ConnectionSecurityDropdownSettingEmail(props) {
+ return (
+ <DropdownSetting
+ id='connectionSecurity'
+ values={[
+ {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
+ {value: 'PLAIN', text: Utils.localizeMessage('admin.connectionSecurityPlain')},
+ {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')},
+ {value: 'STARTTLS', text: Utils.localizeMessage('admin.connectionSecurityStart')}
+ ]}
+ label={
+ <FormattedMessage
+ id='admin.connectionSecurityTitle'
+ defaultMessage='Connection Security:'
+ />
+ }
+ value={props.value}
+ onChange={props.onChange}
+ disabled={props.disabled}
+ helpText={CONNECTION_SECURITY_HELP_TEXT_EMAIL}
+ />
+ );
}
ConnectionSecurityDropdownSettingEmail.defaultProps = {
};
ConnectionSecurityDropdownSettingEmail.propTypes = {
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired
};
-export class ConnectionSecurityDropdownSettingLdap extends React.Component { //eslint-disable-line react/no-multi-comp
- render() {
- return (
- <DropdownSetting
- id='connectionSecurity'
- values={[
- {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
- {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')},
- {value: 'STARTTLS', text: Utils.localizeMessage('admin.connectionSecurityStart')}
- ]}
- label={
- <FormattedMessage
- id='admin.connectionSecurityTitle'
- defaultMessage='Connection Security:'
- />
- }
- value={this.props.value}
- onChange={this.props.onChange}
- disabled={this.props.disabled}
- helpText={CONNECTION_SECURITY_HELP_TEXT_LDAP}
- />
- );
- }
+export function ConnectionSecurityDropdownSettingLdap(props) {
+ return (
+ <DropdownSetting
+ id='connectionSecurity'
+ values={[
+ {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
+ {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')},
+ {value: 'STARTTLS', text: Utils.localizeMessage('admin.connectionSecurityStart')}
+ ]}
+ label={
+ <FormattedMessage
+ id='admin.connectionSecurityTitle'
+ defaultMessage='Connection Security:'
+ />
+ }
+ value={props.value}
+ onChange={props.onChange}
+ disabled={props.disabled}
+ helpText={CONNECTION_SECURITY_HELP_TEXT_LDAP}
+ />
+ );
}
ConnectionSecurityDropdownSettingLdap.defaultProps = {
};
ConnectionSecurityDropdownSettingLdap.propTypes = {
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired
};
-export class ConnectionSecurityDropdownSettingWebserver extends React.Component { //eslint-disable-line react/no-multi-comp
- render() {
- return (
- <DropdownSetting
- id='connectionSecurity'
- values={[
- {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
- {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')}
- ]}
- label={
- <FormattedMessage
- id='admin.connectionSecurityTitle'
- defaultMessage='Connection Security:'
- />
- }
- value={this.props.value}
- onChange={this.props.onChange}
- disabled={this.props.disabled}
- helpText={CONNECTION_SECURITY_HELP_TEXT_WEBSERVER}
- />
- );
- }
+export function ConnectionSecurityDropdownSettingWebserver(props) {
+ return (
+ <DropdownSetting
+ id='connectionSecurity'
+ values={[
+ {value: '', text: Utils.localizeMessage('admin.connectionSecurityNone', 'None')},
+ {value: 'TLS', text: Utils.localizeMessage('admin.connectionSecurityTls', 'TLS (Recommended)')}
+ ]}
+ label={
+ <FormattedMessage
+ id='admin.connectionSecurityTitle'
+ defaultMessage='Connection Security:'
+ />
+ }
+ value={props.value}
+ onChange={props.onChange}
+ disabled={props.disabled}
+ helpText={CONNECTION_SECURITY_HELP_TEXT_WEBSERVER}
+ />
+ );
}
ConnectionSecurityDropdownSettingWebserver.defaultProps = {
};
ConnectionSecurityDropdownSettingWebserver.propTypes = {
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired
};
diff --git a/webapp/components/admin_console/dropdown_setting.jsx b/webapp/components/admin_console/dropdown_setting.jsx
index a3741a629..05179a4b9 100644
--- a/webapp/components/admin_console/dropdown_setting.jsx
+++ b/webapp/components/admin_console/dropdown_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -54,11 +56,11 @@ DropdownSetting.defaultProps = {
};
DropdownSetting.propTypes = {
- id: React.PropTypes.string.isRequired,
- values: React.PropTypes.array.isRequired,
- label: React.PropTypes.node.isRequired,
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool,
- helpText: React.PropTypes.node
+ id: PropTypes.string.isRequired,
+ values: PropTypes.array.isRequired,
+ label: PropTypes.node.isRequired,
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool,
+ helpText: PropTypes.node
};
diff --git a/webapp/components/admin_console/email_connection_test.jsx b/webapp/components/admin_console/email_connection_test.jsx
index e8c3ed316..17edbf23e 100644
--- a/webapp/components/admin_console/email_connection_test.jsx
+++ b/webapp/components/admin_console/email_connection_test.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -12,9 +14,9 @@ import {testEmail} from 'actions/admin_actions.jsx';
export default class EmailConnectionTestButton extends React.Component {
static get propTypes() {
return {
- config: React.PropTypes.object.isRequired,
- getConfigFromState: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired
+ config: PropTypes.object.isRequired,
+ getConfigFromState: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired
};
}
diff --git a/webapp/components/admin_console/file_upload_setting.jsx b/webapp/components/admin_console/file_upload_setting.jsx
index 735853ff5..c2bc9869e 100644
--- a/webapp/components/admin_console/file_upload_setting.jsx
+++ b/webapp/components/admin_console/file_upload_setting.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -12,14 +13,14 @@ import * as Utils from 'utils/utils.jsx';
export default class FileUploadSetting extends Setting {
static get propTypes() {
return {
- id: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- helpText: React.PropTypes.node,
- uploadingText: React.PropTypes.node,
- onSubmit: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool,
- fileType: React.PropTypes.string.isRequired,
- error: React.PropTypes.string
+ id: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ helpText: PropTypes.node,
+ uploadingText: PropTypes.node,
+ onSubmit: PropTypes.func.isRequired,
+ disabled: PropTypes.bool,
+ fileType: PropTypes.string.isRequired,
+ error: PropTypes.string
};
}
diff --git a/webapp/components/admin_console/generated_setting.jsx b/webapp/components/admin_console/generated_setting.jsx
index 9103d1804..b6a495f93 100644
--- a/webapp/components/admin_console/generated_setting.jsx
+++ b/webapp/components/admin_console/generated_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -10,15 +12,15 @@ import {FormattedMessage} from 'react-intl';
export default class GeneratedSetting extends React.Component {
static get propTypes() {
return {
- id: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- placeholder: React.PropTypes.string,
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired,
- disabledText: React.PropTypes.node,
- helpText: React.PropTypes.node.isRequired,
- regenerateText: React.PropTypes.node
+ id: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ placeholder: PropTypes.string,
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired,
+ disabledText: PropTypes.node,
+ helpText: PropTypes.node.isRequired,
+ regenerateText: PropTypes.node
};
}
diff --git a/webapp/components/admin_console/ldap_test_button.jsx b/webapp/components/admin_console/ldap_test_button.jsx
index 2a3559d25..e785d0f78 100644
--- a/webapp/components/admin_console/ldap_test_button.jsx
+++ b/webapp/components/admin_console/ldap_test_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -12,9 +14,9 @@ import {ldapTest} from 'actions/admin_actions.jsx';
export default class LdapTestButton extends React.Component {
static get propTypes() {
return {
- disabled: React.PropTypes.bool,
- submitFunction: React.PropTypes.func,
- saveNeeded: React.PropTypes.bool
+ disabled: PropTypes.bool,
+ submitFunction: PropTypes.func,
+ saveNeeded: PropTypes.bool
};
}
constructor(props) {
diff --git a/webapp/components/admin_console/license_settings.jsx b/webapp/components/admin_console/license_settings.jsx
index 844dd0569..f04a0c351 100644
--- a/webapp/components/admin_console/license_settings.jsx
+++ b/webapp/components/admin_console/license_settings.jsx
@@ -21,6 +21,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class LicenseSettings extends React.Component {
@@ -278,7 +280,7 @@ class LicenseSettings extends React.Component {
LicenseSettings.propTypes = {
intl: intlShape.isRequired,
- config: React.PropTypes.object
+ config: PropTypes.object
};
export default injectIntl(LicenseSettings);
diff --git a/webapp/components/admin_console/manage_teams_modal/manage_teams_dropdown.jsx b/webapp/components/admin_console/manage_teams_modal/manage_teams_dropdown.jsx
index e9ddf621c..e58a2c43d 100644
--- a/webapp/components/admin_console/manage_teams_modal/manage_teams_dropdown.jsx
+++ b/webapp/components/admin_console/manage_teams_modal/manage_teams_dropdown.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -11,11 +13,11 @@ import * as Utils from 'utils/utils.jsx';
export default class ManageTeamsDropdown extends React.Component {
static propTypes = {
- user: React.PropTypes.object.isRequired,
- teamMember: React.PropTypes.object.isRequired,
- onError: React.PropTypes.func.isRequired,
- onMemberChange: React.PropTypes.func.isRequired,
- onMemberRemove: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ teamMember: PropTypes.object.isRequired,
+ onError: PropTypes.func.isRequired,
+ onMemberChange: PropTypes.func.isRequired,
+ onMemberRemove: PropTypes.func.isRequired
};
constructor(props) {
diff --git a/webapp/components/admin_console/manage_teams_modal/manage_teams_modal.jsx b/webapp/components/admin_console/manage_teams_modal/manage_teams_modal.jsx
index 0c30203b4..9012c27e5 100644
--- a/webapp/components/admin_console/manage_teams_modal/manage_teams_modal.jsx
+++ b/webapp/components/admin_console/manage_teams_modal/manage_teams_modal.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -19,9 +21,9 @@ import RemoveFromTeamButton from './remove_from_team_button.jsx';
export default class ManageTeamsModal extends React.Component {
static propTypes = {
- onModalDismissed: React.PropTypes.func.isRequired,
- show: React.PropTypes.bool.isRequired,
- user: React.PropTypes.object
+ onModalDismissed: PropTypes.func.isRequired,
+ show: PropTypes.bool.isRequired,
+ user: PropTypes.object
};
constructor(props) {
diff --git a/webapp/components/admin_console/manage_teams_modal/remove_from_team_button.jsx b/webapp/components/admin_console/manage_teams_modal/remove_from_team_button.jsx
index d95a816f2..28e9fde8f 100644
--- a/webapp/components/admin_console/manage_teams_modal/remove_from_team_button.jsx
+++ b/webapp/components/admin_console/manage_teams_modal/remove_from_team_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,10 +10,10 @@ import {removeUserFromTeam} from 'actions/team_actions.jsx';
export default class RemoveFromTeamButton extends React.PureComponent {
static propTypes = {
- onError: React.PropTypes.func.isRequired,
- onMemberRemove: React.PropTypes.func.isRequired,
- team: React.PropTypes.object.isRequired,
- user: React.PropTypes.object.isRequired
+ onError: PropTypes.func.isRequired,
+ onMemberRemove: PropTypes.func.isRequired,
+ team: PropTypes.object.isRequired,
+ user: PropTypes.object.isRequired
};
constructor(props) {
diff --git a/webapp/components/admin_console/multiselect_settings.jsx b/webapp/components/admin_console/multiselect_settings.jsx
index c73eb6a79..8ae8e1349 100644
--- a/webapp/components/admin_console/multiselect_settings.jsx
+++ b/webapp/components/admin_console/multiselect_settings.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
@@ -65,15 +67,15 @@ MultiSelectSetting.defaultProps = {
};
MultiSelectSetting.propTypes = {
- id: React.PropTypes.string.isRequired,
- values: React.PropTypes.array.isRequired,
- label: React.PropTypes.node.isRequired,
- selected: React.PropTypes.array.isRequired,
- mustBePresent: React.PropTypes.string,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool,
- helpText: React.PropTypes.node,
- noResultText: React.PropTypes.node,
- errorText: React.PropTypes.node,
- notPresent: React.PropTypes.node
+ id: PropTypes.string.isRequired,
+ values: PropTypes.array.isRequired,
+ label: PropTypes.node.isRequired,
+ selected: PropTypes.array.isRequired,
+ mustBePresent: PropTypes.string,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool,
+ helpText: PropTypes.node,
+ noResultText: PropTypes.node,
+ errorText: PropTypes.node,
+ notPresent: PropTypes.node
};
diff --git a/webapp/components/admin_console/post_edit_setting.jsx b/webapp/components/admin_console/post_edit_setting.jsx
index 9480409fd..08fafc14b 100644
--- a/webapp/components/admin_console/post_edit_setting.jsx
+++ b/webapp/components/admin_console/post_edit_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -88,12 +90,12 @@ PostEditSetting.defaultProps = {
};
PostEditSetting.propTypes = {
- id: React.PropTypes.string.isRequired,
- timeLimitId: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- value: React.PropTypes.string.isRequired,
- timeLimitValue: React.PropTypes.number.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool,
- helpText: React.PropTypes.node
+ id: PropTypes.string.isRequired,
+ timeLimitId: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ value: PropTypes.string.isRequired,
+ timeLimitValue: PropTypes.number.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool,
+ helpText: PropTypes.node
};
diff --git a/webapp/components/admin_console/radio_setting.jsx b/webapp/components/admin_console/radio_setting.jsx
index 100fab983..7a6c2e459 100644
--- a/webapp/components/admin_console/radio_setting.jsx
+++ b/webapp/components/admin_console/radio_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -53,11 +55,11 @@ RadioSetting.defaultProps = {
};
RadioSetting.propTypes = {
- id: React.PropTypes.string.isRequired,
- values: React.PropTypes.array.isRequired,
- label: React.PropTypes.node.isRequired,
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool,
- helpText: React.PropTypes.node
+ id: PropTypes.string.isRequired,
+ values: PropTypes.array.isRequired,
+ label: PropTypes.node.isRequired,
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool,
+ helpText: PropTypes.node
};
diff --git a/webapp/components/admin_console/remove_file_setting.jsx b/webapp/components/admin_console/remove_file_setting.jsx
index 4590b7ff6..ff453d9fc 100644
--- a/webapp/components/admin_console/remove_file_setting.jsx
+++ b/webapp/components/admin_console/remove_file_setting.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import Setting from './setting.jsx';
@@ -9,14 +10,14 @@ import Setting from './setting.jsx';
export default class RemoveFileSetting extends Setting {
static get propTypes() {
return {
- id: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- helpText: React.PropTypes.node,
- removeButtonText: React.PropTypes.node.isRequired,
- removingText: React.PropTypes.node,
- fileName: React.PropTypes.string.isRequired,
- onSubmit: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool
+ id: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ helpText: PropTypes.node,
+ removeButtonText: PropTypes.node.isRequired,
+ removingText: PropTypes.node,
+ fileName: PropTypes.string.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ disabled: PropTypes.bool
};
}
diff --git a/webapp/components/admin_console/reset_password_modal.jsx b/webapp/components/admin_console/reset_password_modal.jsx
index 02bb00ab8..0a38adda1 100644
--- a/webapp/components/admin_console/reset_password_modal.jsx
+++ b/webapp/components/admin_console/reset_password_modal.jsx
@@ -8,14 +8,16 @@ import {FormattedMessage} from 'react-intl';
import {adminResetPassword} from 'actions/admin_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ResetPasswordModal extends React.Component {
static propTypes = {
- user: React.PropTypes.object,
- show: React.PropTypes.bool.isRequired,
- onModalSubmit: React.PropTypes.func,
- onModalDismissed: React.PropTypes.func
+ user: PropTypes.object,
+ show: PropTypes.bool.isRequired,
+ onModalSubmit: PropTypes.func,
+ onModalDismissed: PropTypes.func
};
static defaultProps = {
diff --git a/webapp/components/admin_console/save_button.jsx b/webapp/components/admin_console/save_button.jsx
index 18ad43854..4d2b562da 100644
--- a/webapp/components/admin_console/save_button.jsx
+++ b/webapp/components/admin_console/save_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,8 +10,8 @@ import {FormattedMessage} from 'react-intl';
export default class SaveButton extends React.Component {
static get propTypes() {
return {
- saving: React.PropTypes.bool.isRequired,
- disabled: React.PropTypes.bool
+ saving: PropTypes.bool.isRequired,
+ disabled: PropTypes.bool
};
}
diff --git a/webapp/components/admin_console/setting.jsx b/webapp/components/admin_console/setting.jsx
index 1db5a76b7..591e8b551 100644
--- a/webapp/components/admin_console/setting.jsx
+++ b/webapp/components/admin_console/setting.jsx
@@ -1,34 +1,34 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
-export default class Setting extends React.Component {
- render() {
- return (
- <div className='form-group'>
- <label
- className='control-label col-sm-4'
- htmlFor={this.props.inputId}
- >
- {this.props.label}
- </label>
- <div className='col-sm-8'>
- {this.props.children}
- <div className='help-text'>
- {this.props.helpText}
- </div>
+export default function Setting(props) {
+ return (
+ <div className='form-group'>
+ <label
+ className='control-label col-sm-4'
+ htmlFor={props.inputId}
+ >
+ {props.label}
+ </label>
+ <div className='col-sm-8'>
+ {props.children}
+ <div className='help-text'>
+ {props.helpText}
</div>
</div>
- );
- }
+ </div>
+ );
}
Setting.defaultProps = {
};
Setting.propTypes = {
- inputId: React.PropTypes.string,
- label: React.PropTypes.node.isRequired,
- children: React.PropTypes.node.isRequired,
- helpText: React.PropTypes.node
+ inputId: PropTypes.string,
+ label: PropTypes.node.isRequired,
+ children: PropTypes.node.isRequired,
+ helpText: PropTypes.node
};
diff --git a/webapp/components/admin_console/settings_group.jsx b/webapp/components/admin_console/settings_group.jsx
index 0de8130de..79f8dac97 100644
--- a/webapp/components/admin_console/settings_group.jsx
+++ b/webapp/components/admin_console/settings_group.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -6,9 +8,9 @@ import React from 'react';
export default class SettingsGroup extends React.Component {
static get propTypes() {
return {
- show: React.PropTypes.bool.isRequired,
- header: React.PropTypes.node,
- children: React.PropTypes.node
+ show: PropTypes.bool.isRequired,
+ header: PropTypes.node,
+ children: PropTypes.node
};
}
diff --git a/webapp/components/admin_console/sync_now_button.jsx b/webapp/components/admin_console/sync_now_button.jsx
index 6c0c10f62..b2a5a001d 100644
--- a/webapp/components/admin_console/sync_now_button.jsx
+++ b/webapp/components/admin_console/sync_now_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -12,7 +14,7 @@ import {ldapSyncNow} from 'actions/admin_actions.jsx';
export default class SyncNowButton extends React.Component {
static get propTypes() {
return {
- disabled: React.PropTypes.bool
+ disabled: PropTypes.bool
};
}
constructor(props) {
diff --git a/webapp/components/admin_console/system_users/system_users.jsx b/webapp/components/admin_console/system_users/system_users.jsx
index d8c52c807..ae6ebef86 100644
--- a/webapp/components/admin_console/system_users/system_users.jsx
+++ b/webapp/components/admin_console/system_users/system_users.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -34,10 +36,10 @@ const USERS_PER_PAGE = 50;
export default class SystemUsers extends React.Component {
static propTypes = {
- actions: React.PropTypes.shape({
- getTeams: React.PropTypes.func.isRequired,
- getTeamStats: React.PropTypes.func.isRequired,
- getUser: React.PropTypes.func.isRequired
+ actions: PropTypes.shape({
+ getTeams: PropTypes.func.isRequired,
+ getTeamStats: PropTypes.func.isRequired,
+ getUser: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/admin_console/system_users/system_users_dropdown.jsx b/webapp/components/admin_console/system_users/system_users_dropdown.jsx
index 15761564e..159e133e5 100644
--- a/webapp/components/admin_console/system_users/system_users_dropdown.jsx
+++ b/webapp/components/admin_console/system_users/system_users_dropdown.jsx
@@ -13,13 +13,15 @@ import {adminResetMfa} from 'actions/admin_actions.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SystemUsersDropdown extends React.Component {
static propTypes = {
- user: React.PropTypes.object.isRequired,
- doPasswordReset: React.PropTypes.func.isRequired,
- doManageTeams: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ doPasswordReset: PropTypes.func.isRequired,
+ doManageTeams: PropTypes.func.isRequired
};
constructor(props) {
diff --git a/webapp/components/admin_console/system_users/system_users_list.jsx b/webapp/components/admin_console/system_users/system_users_list.jsx
index 89953b4c8..c567fd43c 100644
--- a/webapp/components/admin_console/system_users/system_users_list.jsx
+++ b/webapp/components/admin_console/system_users/system_users_list.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -16,17 +18,17 @@ import SystemUsersDropdown from './system_users_dropdown.jsx';
export default class SystemUsersList extends React.Component {
static propTypes = {
- users: React.PropTypes.arrayOf(React.PropTypes.object),
- usersPerPage: React.PropTypes.number,
- total: React.PropTypes.number,
- nextPage: React.PropTypes.func,
- search: React.PropTypes.func.isRequired,
- focusOnMount: React.PropTypes.bool,
- renderFilterRow: React.PropTypes.func,
-
- teamId: React.PropTypes.string.isRequired,
- term: React.PropTypes.string.isRequired,
- onTermChange: React.PropTypes.func.isRequired
+ users: PropTypes.arrayOf(PropTypes.object),
+ usersPerPage: PropTypes.number,
+ total: PropTypes.number,
+ nextPage: PropTypes.func,
+ search: PropTypes.func.isRequired,
+ focusOnMount: PropTypes.bool,
+ renderFilterRow: PropTypes.func,
+
+ teamId: PropTypes.string.isRequired,
+ term: PropTypes.string.isRequired,
+ onTermChange: PropTypes.func.isRequired
};
constructor(props) {
diff --git a/webapp/components/admin_console/text_setting.jsx b/webapp/components/admin_console/text_setting.jsx
index dfdd8a303..879e352a4 100644
--- a/webapp/components/admin_console/text_setting.jsx
+++ b/webapp/components/admin_console/text_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,18 +11,18 @@ import Constants from 'utils/constants.jsx';
export default class TextSetting extends React.Component {
static get propTypes() {
return {
- id: React.PropTypes.string.isRequired,
- label: React.PropTypes.node.isRequired,
- placeholder: React.PropTypes.string,
- helpText: React.PropTypes.node,
- value: React.PropTypes.oneOfType([
- React.PropTypes.string,
- React.PropTypes.number
+ id: PropTypes.string.isRequired,
+ label: PropTypes.node.isRequired,
+ placeholder: PropTypes.string,
+ helpText: PropTypes.node,
+ value: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.number
]).isRequired,
- maxLength: React.PropTypes.number,
- onChange: React.PropTypes.func,
- disabled: React.PropTypes.bool,
- type: React.PropTypes.oneOf([
+ maxLength: PropTypes.number,
+ onChange: PropTypes.func,
+ disabled: PropTypes.bool,
+ type: PropTypes.oneOf([
'input',
'textarea'
])
diff --git a/webapp/components/admin_console/webserver_mode_dropdown_setting.jsx b/webapp/components/admin_console/webserver_mode_dropdown_setting.jsx
index 9fdbccd2c..e9ddee677 100644
--- a/webapp/components/admin_console/webserver_mode_dropdown_setting.jsx
+++ b/webapp/components/admin_console/webserver_mode_dropdown_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -67,35 +69,33 @@ const WEBSERVER_MODE_HELP_TEXT = (
</div>
);
-export default class WebserverModeDropdownSetting extends React.Component {
- render() {
- return (
- <DropdownSetting
- id='webserverMode'
- values={[
- {value: 'gzip', text: Utils.localizeMessage('admin.webserverModeGzip', 'gzip')},
- {value: 'uncompressed', text: Utils.localizeMessage('admin.webserverModeUncompressed', 'Uncompressed')},
- {value: 'disabled', text: Utils.localizeMessage('admin.webserverModeDisabled', 'Disabled')}
- ]}
- label={
- <FormattedMessage
- id='admin.webserverModeTitle'
- defaultMessage='Webserver Mode:'
- />
- }
- value={this.props.value}
- onChange={this.props.onChange}
- disabled={this.props.disabled}
- helpText={WEBSERVER_MODE_HELP_TEXT}
- />
- );
- }
+export default function WebserverModeDropdownSetting(props) {
+ return (
+ <DropdownSetting
+ id='webserverMode'
+ values={[
+ {value: 'gzip', text: Utils.localizeMessage('admin.webserverModeGzip', 'gzip')},
+ {value: 'uncompressed', text: Utils.localizeMessage('admin.webserverModeUncompressed', 'Uncompressed')},
+ {value: 'disabled', text: Utils.localizeMessage('admin.webserverModeDisabled', 'Disabled')}
+ ]}
+ label={
+ <FormattedMessage
+ id='admin.webserverModeTitle'
+ defaultMessage='Webserver Mode:'
+ />
+ }
+ value={props.value}
+ onChange={props.onChange}
+ disabled={props.disabled}
+ helpText={WEBSERVER_MODE_HELP_TEXT}
+ />
+ );
}
WebserverModeDropdownSetting.defaultProps = {
};
WebserverModeDropdownSetting.propTypes = {
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- disabled: React.PropTypes.bool.isRequired
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ disabled: PropTypes.bool.isRequired
};
diff --git a/webapp/components/analytics/doughnut_chart.jsx b/webapp/components/analytics/doughnut_chart.jsx
index b6539bd54..598922acd 100644
--- a/webapp/components/analytics/doughnut_chart.jsx
+++ b/webapp/components/analytics/doughnut_chart.jsx
@@ -5,6 +5,8 @@ import {FormattedMessage} from 'react-intl';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import Chart from 'chart.js';
@@ -80,9 +82,9 @@ export default class DoughnutChart extends React.Component {
}
DoughnutChart.propTypes = {
- title: React.PropTypes.node,
- width: React.PropTypes.string,
- height: React.PropTypes.string,
- data: React.PropTypes.object,
- options: React.PropTypes.object
+ title: PropTypes.node,
+ width: PropTypes.string,
+ height: PropTypes.string,
+ data: PropTypes.object,
+ options: PropTypes.object
};
diff --git a/webapp/components/analytics/line_chart.jsx b/webapp/components/analytics/line_chart.jsx
index 7f4ca51d0..67a1162fc 100644
--- a/webapp/components/analytics/line_chart.jsx
+++ b/webapp/components/analytics/line_chart.jsx
@@ -5,6 +5,8 @@ import {FormattedMessage} from 'react-intl';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import Chart from 'chart.js';
@@ -110,10 +112,10 @@ export default class LineChart extends React.Component {
}
LineChart.propTypes = {
- title: React.PropTypes.node.isRequired,
- width: React.PropTypes.string.isRequired,
- height: React.PropTypes.string.isRequired,
- data: React.PropTypes.object,
- options: React.PropTypes.object
+ title: PropTypes.node.isRequired,
+ width: PropTypes.string.isRequired,
+ height: PropTypes.string.isRequired,
+ data: PropTypes.object,
+ options: PropTypes.object
};
diff --git a/webapp/components/analytics/statistic_count.jsx b/webapp/components/analytics/statistic_count.jsx
index d7849f6dd..4b505bb3f 100644
--- a/webapp/components/analytics/statistic_count.jsx
+++ b/webapp/components/analytics/statistic_count.jsx
@@ -3,33 +3,33 @@
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
-export default class StatisticCount extends React.Component {
- render() {
- const loading = (
- <FormattedMessage
- id='analytics.chart.loading'
- defaultMessage='Loading...'
- />
- );
+export default function StatisticCount(props) {
+ const loading = (
+ <FormattedMessage
+ id='analytics.chart.loading'
+ defaultMessage='Loading...'
+ />
+ );
- return (
- <div className='col-md-3 col-sm-6'>
- <div className='total-count'>
- <div className='title'>
- {this.props.title}
- <i className={'fa ' + this.props.icon}/>
- </div>
- <div className='content'>{this.props.count == null ? loading : this.props.count}</div>
+ return (
+ <div className='col-md-3 col-sm-6'>
+ <div className='total-count'>
+ <div className='title'>
+ {props.title}
+ <i className={'fa ' + props.icon}/>
</div>
+ <div className='content'>{props.count == null ? loading : props.count}</div>
</div>
- );
- }
+ </div>
+ );
}
StatisticCount.propTypes = {
- title: React.PropTypes.node.isRequired,
- icon: React.PropTypes.string.isRequired,
- count: React.PropTypes.number
+ title: PropTypes.node.isRequired,
+ icon: PropTypes.string.isRequired,
+ count: PropTypes.number
};
diff --git a/webapp/components/analytics/table_chart.jsx b/webapp/components/analytics/table_chart.jsx
index e6e210876..408871cb7 100644
--- a/webapp/components/analytics/table_chart.jsx
+++ b/webapp/components/analytics/table_chart.jsx
@@ -5,57 +5,57 @@ import Constants from 'utils/constants.jsx';
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
-export default class TableChart extends React.Component {
- render() {
- return (
- <div className='col-sm-6'>
- <div className='total-count recent-active-users'>
- <div className='title'>
- {this.props.title}
- </div>
- <div className='content'>
- <table>
- <tbody>
- {
- this.props.data.map((item) => {
- const tooltip = (
- <Tooltip id={'tip-table-entry-' + item.name}>
- {item.tip}
- </Tooltip>
- );
+export default function TableChart(props) {
+ return (
+ <div className='col-sm-6'>
+ <div className='total-count recent-active-users'>
+ <div className='title'>
+ {props.title}
+ </div>
+ <div className='content'>
+ <table>
+ <tbody>
+ {
+ props.data.map((item) => {
+ const tooltip = (
+ <Tooltip id={'tip-table-entry-' + item.name}>
+ {item.tip}
+ </Tooltip>
+ );
- return (
- <tr key={'table-entry-' + item.name}>
- <td>
- <OverlayTrigger
- delayShow={Constants.OVERLAY_TIME_DELAY}
- placement='top'
- overlay={tooltip}
- >
- <time>
- {item.name}
- </time>
- </OverlayTrigger>
- </td>
- <td>
- {item.value}
- </td>
- </tr>
- );
- })
- }
- </tbody>
- </table>
- </div>
+ return (
+ <tr key={'table-entry-' + item.name}>
+ <td>
+ <OverlayTrigger
+ delayShow={Constants.OVERLAY_TIME_DELAY}
+ placement='top'
+ overlay={tooltip}
+ >
+ <time>
+ {item.name}
+ </time>
+ </OverlayTrigger>
+ </td>
+ <td>
+ {item.value}
+ </td>
+ </tr>
+ );
+ })
+ }
+ </tbody>
+ </table>
</div>
</div>
- );
- }
+ </div>
+ );
}
TableChart.propTypes = {
- title: React.PropTypes.node,
- data: React.PropTypes.array
+ title: PropTypes.node,
+ data: PropTypes.array
};
diff --git a/webapp/components/analytics/team_analytics/team_analytics.jsx b/webapp/components/analytics/team_analytics/team_analytics.jsx
index 40efcd065..eff19a309 100644
--- a/webapp/components/analytics/team_analytics/team_analytics.jsx
+++ b/webapp/components/analytics/team_analytics/team_analytics.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -24,8 +26,8 @@ const LAST_ANALYTICS_TEAM = 'last_analytics_team';
export default class TeamAnalytics extends React.Component {
static propTypes = {
- actions: React.PropTypes.shape({
- getTeams: React.PropTypes.func.isRequired
+ actions: PropTypes.shape({
+ getTeams: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/audio_video_preview.jsx b/webapp/components/audio_video_preview.jsx
index bdad5c2eb..968f8433f 100644
--- a/webapp/components/audio_video_preview.jsx
+++ b/webapp/components/audio_video_preview.jsx
@@ -7,6 +7,8 @@ import Constants from 'utils/constants.jsx';
import FileInfoPreview from './file_info_preview.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class AudioVideoPreview extends React.Component {
@@ -109,6 +111,6 @@ export default class AudioVideoPreview extends React.Component {
}
AudioVideoPreview.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
- fileUrl: React.PropTypes.string.isRequired
+ fileInfo: PropTypes.object.isRequired,
+ fileUrl: PropTypes.string.isRequired
};
diff --git a/webapp/components/audit_table.jsx b/webapp/components/audit_table.jsx
index e07d6ca12..1f005e7e5 100644
--- a/webapp/components/audit_table.jsx
+++ b/webapp/components/audit_table.jsx
@@ -206,129 +206,129 @@ const holders = defineMessages({
}
});
-import React from 'react';
+import PropTypes from 'prop-types';
-class AuditTable extends React.Component {
- render() {
- var accessList = [];
-
- const {formatMessage} = this.props.intl;
- for (var i = 0; i < this.props.audits.length; i++) {
- const audit = this.props.audits[i];
- const auditInfo = formatAuditInfo(audit, formatMessage);
-
- let uContent;
- if (this.props.showUserId) {
- var profile = UserStore.getProfile(auditInfo.userId);
- if (profile) {
- uContent = <td className='word-break--all'>{profile.email}</td>;
- } else {
- uContent = <td className='word-break--all'>{auditInfo.userId}</td>;
- }
- }
+import React from 'react';
- let iContent;
- if (this.props.showIp) {
- iContent = <td className='whitespace--nowrap word-break--all'>{auditInfo.ip}</td>;
- }
+function AuditTable(props) {
+ var accessList = [];
- let sContent;
- if (this.props.showSession) {
- sContent = <td className='whitespace--nowrap word-break--all'>{auditInfo.sessionId}</td>;
- }
+ const {formatMessage} = props.intl;
+ for (var i = 0; i < props.audits.length; i++) {
+ const audit = props.audits[i];
+ const auditInfo = formatAuditInfo(audit, formatMessage);
- const descStyle = {};
- if (auditInfo.desc.toLowerCase().indexOf('fail') !== -1) {
- descStyle.color = 'red';
+ let uContent;
+ if (props.showUserId) {
+ var profile = UserStore.getProfile(auditInfo.userId);
+ if (profile) {
+ uContent = <td className='word-break--all'>{profile.email}</td>;
+ } else {
+ uContent = <td className='word-break--all'>{auditInfo.userId}</td>;
}
-
- accessList[i] = (
- <tr key={audit.id}>
- <td className='whitespace--nowrap word-break--all'>{auditInfo.timestamp}</td>
- {uContent}
- <td
- className='word-break--all'
- style={descStyle}
- >
- {auditInfo.desc}
- </td>
- {iContent}
- {sContent}
- </tr>
- );
}
- let userIdContent;
- if (this.props.showUserId) {
- userIdContent = (
- <th>
- <FormattedMessage
- id='audit_table.userId'
- defaultMessage='User ID'
- />
- </th>
- );
+ let iContent;
+ if (props.showIp) {
+ iContent = <td className='whitespace--nowrap word-break--all'>{auditInfo.ip}</td>;
}
- let ipContent;
- if (this.props.showIp) {
- ipContent = (
- <th>
- <FormattedMessage
- id='audit_table.ip'
- defaultMessage='IP Address'
- />
- </th>
- );
+ let sContent;
+ if (props.showSession) {
+ sContent = <td className='whitespace--nowrap word-break--all'>{auditInfo.sessionId}</td>;
}
- let sessionContent;
- if (this.props.showSession) {
- sessionContent = (
- <th>
- <FormattedMessage
- id='audit_table.session'
- defaultMessage='Session ID'
- />
- </th>
- );
+ const descStyle = {};
+ if (auditInfo.desc.toLowerCase().indexOf('fail') !== -1) {
+ descStyle.color = 'red';
}
- return (
- <table className='table'>
- <thead>
- <tr>
- <th>
- <FormattedMessage
- id='audit_table.timestamp'
- defaultMessage='Timestamp'
- />
- </th>
- {userIdContent}
- <th>
- <FormattedMessage
- id='audit_table.action'
- defaultMessage='Action'
- />
- </th>
- {ipContent}
- {sessionContent}
- </tr>
- </thead>
- <tbody>
- {accessList}
- </tbody>
- </table>
+ accessList[i] = (
+ <tr key={audit.id}>
+ <td className='whitespace--nowrap word-break--all'>{auditInfo.timestamp}</td>
+ {uContent}
+ <td
+ className='word-break--all'
+ style={descStyle}
+ >
+ {auditInfo.desc}
+ </td>
+ {iContent}
+ {sContent}
+ </tr>
+ );
+ }
+
+ let userIdContent;
+ if (props.showUserId) {
+ userIdContent = (
+ <th>
+ <FormattedMessage
+ id='audit_table.userId'
+ defaultMessage='User ID'
+ />
+ </th>
+ );
+ }
+
+ let ipContent;
+ if (props.showIp) {
+ ipContent = (
+ <th>
+ <FormattedMessage
+ id='audit_table.ip'
+ defaultMessage='IP Address'
+ />
+ </th>
+ );
+ }
+
+ let sessionContent;
+ if (props.showSession) {
+ sessionContent = (
+ <th>
+ <FormattedMessage
+ id='audit_table.session'
+ defaultMessage='Session ID'
+ />
+ </th>
);
}
+
+ return (
+ <table className='table'>
+ <thead>
+ <tr>
+ <th>
+ <FormattedMessage
+ id='audit_table.timestamp'
+ defaultMessage='Timestamp'
+ />
+ </th>
+ {userIdContent}
+ <th>
+ <FormattedMessage
+ id='audit_table.action'
+ defaultMessage='Action'
+ />
+ </th>
+ {ipContent}
+ {sessionContent}
+ </tr>
+ </thead>
+ <tbody>
+ {accessList}
+ </tbody>
+ </table>
+ );
}
AuditTable.propTypes = {
intl: intlShape.isRequired,
- audits: React.PropTypes.array.isRequired,
- showUserId: React.PropTypes.bool,
- showIp: React.PropTypes.bool,
- showSession: React.PropTypes.bool
+ audits: PropTypes.array.isRequired,
+ showUserId: PropTypes.bool,
+ showIp: PropTypes.bool,
+ showSession: PropTypes.bool
};
export default injectIntl(AuditTable);
diff --git a/webapp/components/authorize.jsx b/webapp/components/authorize.jsx
index f4d80b1f0..ec8bc5a06 100644
--- a/webapp/components/authorize.jsx
+++ b/webapp/components/authorize.jsx
@@ -4,6 +4,7 @@
import FormError from 'components/form_error.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
+import PropTypes from 'prop-types';
import React from 'react';
import icon50 from 'images/icon50x50.png';
@@ -13,8 +14,8 @@ import {getOAuthAppInfo, allowOAuth2} from 'actions/admin_actions.jsx';
export default class Authorize extends React.Component {
static get propTypes() {
return {
- location: React.PropTypes.object.isRequired,
- params: React.PropTypes.object.isRequired
+ location: PropTypes.object.isRequired,
+ params: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/autosize_textarea.jsx b/webapp/components/autosize_textarea.jsx
index 656ce97d2..17d07b59a 100644
--- a/webapp/components/autosize_textarea.jsx
+++ b/webapp/components/autosize_textarea.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -5,9 +7,9 @@ import React from 'react';
export default class AutosizeTextarea extends React.Component {
static propTypes = {
- value: React.PropTypes.string,
- placeholder: React.PropTypes.string,
- onHeightChange: React.PropTypes.func
+ value: PropTypes.string,
+ placeholder: PropTypes.string,
+ onHeightChange: PropTypes.func
}
constructor(props) {
diff --git a/webapp/components/backstage/backstage_controller.jsx b/webapp/components/backstage/backstage_controller.jsx
index f354f141d..4619641b1 100644
--- a/webapp/components/backstage/backstage_controller.jsx
+++ b/webapp/components/backstage/backstage_controller.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,8 +15,8 @@ import ErrorBar from 'components/error_bar.jsx';
export default class BackstageController extends React.Component {
static get propTypes() {
return {
- user: React.PropTypes.object,
- children: React.PropTypes.node.isRequired
+ user: PropTypes.object,
+ children: PropTypes.node.isRequired
};
}
diff --git a/webapp/components/backstage/components/backstage_category.jsx b/webapp/components/backstage/components/backstage_category.jsx
index 50ade74dc..ee98e6b56 100644
--- a/webapp/components/backstage/components/backstage_category.jsx
+++ b/webapp/components/backstage/components/backstage_category.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,11 +10,11 @@ import {Link} from 'react-router/es6';
export default class BackstageCategory extends React.Component {
static get propTypes() {
return {
- name: React.PropTypes.string.isRequired,
- title: React.PropTypes.node.isRequired,
- icon: React.PropTypes.string.isRequired,
- parentLink: React.PropTypes.string,
- children: React.PropTypes.arrayOf(React.PropTypes.element)
+ name: PropTypes.string.isRequired,
+ title: PropTypes.node.isRequired,
+ icon: PropTypes.string.isRequired,
+ parentLink: PropTypes.string,
+ children: PropTypes.arrayOf(PropTypes.element)
};
}
@@ -25,7 +27,7 @@ export default class BackstageCategory extends React.Component {
static get contextTypes() {
return {
- router: React.PropTypes.object.isRequired
+ router: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/backstage/components/backstage_header.jsx b/webapp/components/backstage/components/backstage_header.jsx
index 65ba5c77d..68d5590a6 100644
--- a/webapp/components/backstage/components/backstage_header.jsx
+++ b/webapp/components/backstage/components/backstage_header.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -6,7 +8,7 @@ import React from 'react';
export default class BackstageHeader extends React.Component {
static get propTypes() {
return {
- children: React.PropTypes.node
+ children: PropTypes.node
};
}
diff --git a/webapp/components/backstage/components/backstage_list.jsx b/webapp/components/backstage/components/backstage_list.jsx
index 2dcecb90a..d0a2426ec 100644
--- a/webapp/components/backstage/components/backstage_list.jsx
+++ b/webapp/components/backstage/components/backstage_list.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -10,14 +12,14 @@ import LoadingScreen from 'components/loading_screen.jsx';
export default class BackstageList extends React.Component {
static propTypes = {
- children: React.PropTypes.node,
- header: React.PropTypes.node.isRequired,
- addLink: React.PropTypes.string,
- addText: React.PropTypes.node,
- emptyText: React.PropTypes.node,
- helpText: React.PropTypes.node,
- loading: React.PropTypes.bool.isRequired,
- searchPlaceholder: React.PropTypes.string
+ children: PropTypes.node,
+ header: PropTypes.node.isRequired,
+ addLink: PropTypes.string,
+ addText: PropTypes.node,
+ emptyText: PropTypes.node,
+ helpText: PropTypes.node,
+ loading: PropTypes.bool.isRequired,
+ searchPlaceholder: PropTypes.string
}
static defaultProps = {
diff --git a/webapp/components/backstage/components/backstage_navbar.jsx b/webapp/components/backstage/components/backstage_navbar.jsx
index 8e1b6bb27..c3a9feec8 100644
--- a/webapp/components/backstage/components/backstage_navbar.jsx
+++ b/webapp/components/backstage/components/backstage_navbar.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,7 +11,7 @@ import {Link} from 'react-router/es6';
export default class BackstageNavbar extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object.isRequired
+ team: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/backstage/components/backstage_section.jsx b/webapp/components/backstage/components/backstage_section.jsx
index 26c06ca29..6da53a6e6 100644
--- a/webapp/components/backstage/components/backstage_section.jsx
+++ b/webapp/components/backstage/components/backstage_section.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,11 +10,11 @@ import {Link} from 'react-router/es6';
export default class BackstageSection extends React.Component {
static get propTypes() {
return {
- name: React.PropTypes.string.isRequired,
- title: React.PropTypes.node.isRequired,
- parentLink: React.PropTypes.string,
- subsection: React.PropTypes.bool,
- children: React.PropTypes.arrayOf(React.PropTypes.element)
+ name: PropTypes.string.isRequired,
+ title: PropTypes.node.isRequired,
+ parentLink: PropTypes.string,
+ subsection: PropTypes.bool,
+ children: PropTypes.arrayOf(PropTypes.element)
};
}
@@ -26,7 +28,7 @@ export default class BackstageSection extends React.Component {
static get contextTypes() {
return {
- router: React.PropTypes.object.isRequired
+ router: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/backstage/components/backstage_sidebar.jsx b/webapp/components/backstage/components/backstage_sidebar.jsx
index 9c5ff3e6f..00cd6b63e 100644
--- a/webapp/components/backstage/components/backstage_sidebar.jsx
+++ b/webapp/components/backstage/components/backstage_sidebar.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,8 +15,8 @@ import {FormattedMessage} from 'react-intl';
export default class BackstageSidebar extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object.isRequired,
- user: React.PropTypes.object.isRequired
+ team: PropTypes.object.isRequired,
+ user: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/change_url_modal.jsx b/webapp/components/change_url_modal.jsx
index 1a0004bb0..ee01ec14f 100644
--- a/webapp/components/change_url_modal.jsx
+++ b/webapp/components/change_url_modal.jsx
@@ -9,6 +9,8 @@ import * as URL from 'utils/url.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ChangeUrlModal extends React.Component {
@@ -234,12 +236,12 @@ ChangeUrlModal.defaultProps = {
};
ChangeUrlModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- title: React.PropTypes.node,
- submitButtonText: React.PropTypes.node,
- currentURL: React.PropTypes.string,
- serverError: React.PropTypes.node,
- onModalSubmit: React.PropTypes.func.isRequired,
- onModalExited: React.PropTypes.func,
- onModalDismissed: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ title: PropTypes.node,
+ submitButtonText: PropTypes.node,
+ currentURL: PropTypes.string,
+ serverError: PropTypes.node,
+ onModalSubmit: PropTypes.func.isRequired,
+ onModalExited: PropTypes.func,
+ onModalDismissed: PropTypes.func.isRequired
};
diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx
index f09a4a61d..ad225e120 100644
--- a/webapp/components/channel_header.jsx
+++ b/webapp/components/channel_header.jsx
@@ -37,6 +37,8 @@ import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
import {Constants, Preferences, UserStatuses, ActionTypes} from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
import {Tooltip, OverlayTrigger, Popover} from 'react-bootstrap';
@@ -948,5 +950,5 @@ export default class ChannelHeader extends React.Component {
}
ChannelHeader.propTypes = {
- channelId: React.PropTypes.string.isRequired
+ channelId: PropTypes.string.isRequired
};
diff --git a/webapp/components/channel_info_modal.jsx b/webapp/components/channel_info_modal.jsx
index 702d9059c..25824e28c 100644
--- a/webapp/components/channel_info_modal.jsx
+++ b/webapp/components/channel_info_modal.jsx
@@ -9,6 +9,8 @@ import {Modal} from 'react-bootstrap';
import TeamStore from 'stores/team_store.jsx';
import * as TextFormatting from 'utils/text_formatting.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ChannelInfoModal extends React.Component {
@@ -137,6 +139,6 @@ export default class ChannelInfoModal extends React.Component {
}
ChannelInfoModal.propTypes = {
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired
};
diff --git a/webapp/components/channel_invite_button.jsx b/webapp/components/channel_invite_button.jsx
index c96b687a8..dbdf68246 100644
--- a/webapp/components/channel_invite_button.jsx
+++ b/webapp/components/channel_invite_button.jsx
@@ -5,15 +5,17 @@ import SpinnerButton from 'components/spinner_button.jsx';
import {addUserToChannel} from 'actions/channel_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class ChannelInviteButton extends React.Component {
static get propTypes() {
return {
- user: React.PropTypes.object.isRequired,
- channel: React.PropTypes.object.isRequired,
- onInviteError: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ channel: PropTypes.object.isRequired,
+ onInviteError: PropTypes.func.isRequired
};
}
diff --git a/webapp/components/channel_invite_modal/channel_invite_modal.jsx b/webapp/components/channel_invite_modal/channel_invite_modal.jsx
index 4be0d23e5..d2fceb2c3 100644
--- a/webapp/components/channel_invite_modal/channel_invite_modal.jsx
+++ b/webapp/components/channel_invite_modal/channel_invite_modal.jsx
@@ -14,6 +14,8 @@ import {searchUsers} from 'actions/user_actions.jsx';
import * as UserAgent from 'utils/user_agent.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -25,11 +27,11 @@ const USERS_PER_PAGE = 50;
export default class ChannelInviteModal extends React.Component {
static propTypes = {
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired,
- actions: React.PropTypes.shape({
- getProfilesNotInChannel: React.PropTypes.func.isRequired,
- getTeamStats: React.PropTypes.func.isRequired
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired,
+ actions: PropTypes.shape({
+ getProfilesNotInChannel: PropTypes.func.isRequired,
+ getTeamStats: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/channel_members_dropdown/channel_members_dropdown.jsx b/webapp/components/channel_members_dropdown/channel_members_dropdown.jsx
index f7d42ce9b..c327f9f81 100644
--- a/webapp/components/channel_members_dropdown/channel_members_dropdown.jsx
+++ b/webapp/components/channel_members_dropdown/channel_members_dropdown.jsx
@@ -11,17 +11,19 @@ import * as Utils from 'utils/utils.jsx';
import {canManageMembers} from 'utils/channel_utils.jsx';
import {Constants} from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class ChannelMembersDropdown extends React.Component {
static propTypes = {
- channel: React.PropTypes.object.isRequired,
- user: React.PropTypes.object.isRequired,
- teamMember: React.PropTypes.object.isRequired,
- channelMember: React.PropTypes.object.isRequired,
- actions: React.PropTypes.shape({
- getChannelStats: React.PropTypes.func.isRequired
+ channel: PropTypes.object.isRequired,
+ user: PropTypes.object.isRequired,
+ teamMember: PropTypes.object.isRequired,
+ channelMember: PropTypes.object.isRequired,
+ actions: PropTypes.shape({
+ getChannelStats: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/channel_members_modal.jsx b/webapp/components/channel_members_modal.jsx
index 492bc8809..d361f6b7c 100644
--- a/webapp/components/channel_members_modal.jsx
+++ b/webapp/components/channel_members_modal.jsx
@@ -10,6 +10,8 @@ import ChannelStore from 'stores/channel_store.jsx';
import {canManageMembers} from 'utils/channel_utils.jsx';
import {Constants} from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -87,7 +89,7 @@ export default class ChannelMembersModal extends React.Component {
}
ChannelMembersModal.propTypes = {
- onModalDismissed: React.PropTypes.func.isRequired,
- showInviteModal: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired
+ onModalDismissed: PropTypes.func.isRequired,
+ showInviteModal: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired
};
diff --git a/webapp/components/channel_notifications_modal.jsx b/webapp/components/channel_notifications_modal.jsx
index d1fd81057..e924b3d45 100644
--- a/webapp/components/channel_notifications_modal.jsx
+++ b/webapp/components/channel_notifications_modal.jsx
@@ -5,6 +5,7 @@ import SettingItemMin from 'components/setting_item_min.jsx';
import SettingItemMax from 'components/setting_item_max.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -643,8 +644,8 @@ export default class ChannelNotificationsModal extends React.Component {
}
ChannelNotificationsModal.propTypes = {
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired,
- channelMember: React.PropTypes.object.isRequired,
- currentUser: React.PropTypes.object.isRequired
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired,
+ channelMember: PropTypes.object.isRequired,
+ currentUser: PropTypes.object.isRequired
};
diff --git a/webapp/components/channel_select.jsx b/webapp/components/channel_select.jsx
index 59dc97d41..b1b0f0276 100644
--- a/webapp/components/channel_select.jsx
+++ b/webapp/components/channel_select.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -11,11 +13,11 @@ import {sortChannelsByDisplayName} from 'utils/channel_utils.jsx';
export default class ChannelSelect extends React.Component {
static get propTypes() {
return {
- onChange: React.PropTypes.func,
- value: React.PropTypes.string,
- selectOpen: React.PropTypes.bool.isRequired,
- selectPrivate: React.PropTypes.bool.isRequired,
- selectDm: React.PropTypes.bool.isRequired
+ onChange: PropTypes.func,
+ value: PropTypes.string,
+ selectOpen: PropTypes.bool.isRequired,
+ selectPrivate: PropTypes.bool.isRequired,
+ selectDm: PropTypes.bool.isRequired
};
}
diff --git a/webapp/components/channel_switch_modal.jsx b/webapp/components/channel_switch_modal.jsx
index aad2251b2..1ad9249e8 100644
--- a/webapp/components/channel_switch_modal.jsx
+++ b/webapp/components/channel_switch_modal.jsx
@@ -16,6 +16,8 @@ import UserStore from 'stores/user_store.jsx';
import Constants from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import $ from 'jquery';
@@ -206,7 +208,7 @@ export default class SwitchChannelModal extends React.Component {
}
SwitchChannelModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- onHide: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ onHide: PropTypes.func.isRequired
};
diff --git a/webapp/components/channel_view.jsx b/webapp/components/channel_view.jsx
index e9fb4cf94..97275d37d 100644
--- a/webapp/components/channel_view.jsx
+++ b/webapp/components/channel_view.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import * as UserAgent from 'utils/user_agent.jsx';
@@ -91,5 +92,5 @@ ChannelView.defaultProps = {
};
ChannelView.propTypes = {
- params: React.PropTypes.object.isRequired
+ params: PropTypes.object.isRequired
};
diff --git a/webapp/components/claim/claim_controller.jsx b/webapp/components/claim/claim_controller.jsx
index cc92343fd..ccf4fb64b 100644
--- a/webapp/components/claim/claim_controller.jsx
+++ b/webapp/components/claim/claim_controller.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -54,6 +56,6 @@ export default class ClaimController extends React.Component {
ClaimController.defaultProps = {
};
ClaimController.propTypes = {
- location: React.PropTypes.object.isRequired,
- children: React.PropTypes.node
+ location: PropTypes.object.isRequired,
+ children: PropTypes.node
};
diff --git a/webapp/components/claim/components/email_to_ldap.jsx b/webapp/components/claim/components/email_to_ldap.jsx
index deb7835c2..ab65e7dc6 100644
--- a/webapp/components/claim/components/email_to_ldap.jsx
+++ b/webapp/components/claim/components/email_to_ldap.jsx
@@ -8,6 +8,8 @@ import * as Utils from 'utils/utils.jsx';
import {checkMfa} from 'actions/user_actions.jsx';
import {emailToLdap} from 'actions/admin_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -253,5 +255,5 @@ export default class EmailToLDAP extends React.Component {
EmailToLDAP.defaultProps = {
};
EmailToLDAP.propTypes = {
- email: React.PropTypes.string
+ email: PropTypes.string
};
diff --git a/webapp/components/claim/components/email_to_oauth.jsx b/webapp/components/claim/components/email_to_oauth.jsx
index ea2fcb92e..27504e6f3 100644
--- a/webapp/components/claim/components/email_to_oauth.jsx
+++ b/webapp/components/claim/components/email_to_oauth.jsx
@@ -9,6 +9,8 @@ import Constants from 'utils/constants.jsx';
import {checkMfa} from 'actions/user_actions.jsx';
import {emailToOAuth} from 'actions/admin_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
@@ -171,6 +173,6 @@ export default class EmailToOAuth extends React.Component {
EmailToOAuth.defaultProps = {
};
EmailToOAuth.propTypes = {
- newType: React.PropTypes.string,
- email: React.PropTypes.string
+ newType: PropTypes.string,
+ email: PropTypes.string
};
diff --git a/webapp/components/claim/components/ldap_to_email.jsx b/webapp/components/claim/components/ldap_to_email.jsx
index 5e2ca26a1..ad7b0658b 100644
--- a/webapp/components/claim/components/ldap_to_email.jsx
+++ b/webapp/components/claim/components/ldap_to_email.jsx
@@ -7,6 +7,8 @@ import * as Utils from 'utils/utils.jsx';
import {checkMfa, switchFromLdapToEmail} from 'actions/user_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -240,5 +242,5 @@ export default class LDAPToEmail extends React.Component {
LDAPToEmail.defaultProps = {
};
LDAPToEmail.propTypes = {
- email: React.PropTypes.string
+ email: PropTypes.string
};
diff --git a/webapp/components/claim/components/oauth_to_email.jsx b/webapp/components/claim/components/oauth_to_email.jsx
index 6959f413c..5304de6e5 100644
--- a/webapp/components/claim/components/oauth_to_email.jsx
+++ b/webapp/components/claim/components/oauth_to_email.jsx
@@ -4,6 +4,8 @@
import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
@@ -139,6 +141,6 @@ export default class OAuthToEmail extends React.Component {
OAuthToEmail.defaultProps = {
};
OAuthToEmail.propTypes = {
- currentType: React.PropTypes.string,
- email: React.PropTypes.string
+ currentType: PropTypes.string,
+ email: PropTypes.string
};
diff --git a/webapp/components/code_preview.jsx b/webapp/components/code_preview.jsx
index a4a708adf..fc2d7314e 100644
--- a/webapp/components/code_preview.jsx
+++ b/webapp/components/code_preview.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import * as SyntaxHighlighting from 'utils/syntax_highlighting.jsx';
@@ -136,6 +137,6 @@ export default class CodePreview extends React.Component {
}
CodePreview.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
- fileUrl: React.PropTypes.string.isRequired
+ fileInfo: PropTypes.object.isRequired,
+ fileUrl: PropTypes.string.isRequired
};
diff --git a/webapp/components/common/comment_icon.jsx b/webapp/components/common/comment_icon.jsx
index e8be773e5..63218971f 100644
--- a/webapp/components/common/comment_icon.jsx
+++ b/webapp/components/common/comment_icon.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -41,11 +43,11 @@ export default function CommentIcon(props) {
}
CommentIcon.propTypes = {
- idPrefix: React.PropTypes.string.isRequired,
- idCount: React.PropTypes.number,
- handleCommentClick: React.PropTypes.func.isRequired,
- searchStyle: React.PropTypes.string,
- commentCount: React.PropTypes.number
+ idPrefix: PropTypes.string.isRequired,
+ idCount: PropTypes.number,
+ handleCommentClick: PropTypes.func.isRequired,
+ searchStyle: PropTypes.string,
+ commentCount: PropTypes.number
};
CommentIcon.defaultProps = {
diff --git a/webapp/components/common/post_flag_icon.jsx b/webapp/components/common/post_flag_icon.jsx
index eb993d9f6..533b38bff 100644
--- a/webapp/components/common/post_flag_icon.jsx
+++ b/webapp/components/common/post_flag_icon.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -72,11 +74,11 @@ export default function PostFlagIcon(props) {
}
PostFlagIcon.propTypes = {
- idPrefix: React.PropTypes.string.isRequired,
- idCount: React.PropTypes.number,
- postId: React.PropTypes.string.isRequired,
- isFlagged: React.PropTypes.bool.isRequired,
- isEphemeral: React.PropTypes.bool
+ idPrefix: PropTypes.string.isRequired,
+ idCount: PropTypes.number,
+ postId: PropTypes.string.isRequired,
+ isFlagged: PropTypes.bool.isRequired,
+ isEphemeral: PropTypes.bool
};
PostFlagIcon.defaultProps = {
diff --git a/webapp/components/confirm_modal.jsx b/webapp/components/confirm_modal.jsx
index 05288e3ac..d6803499a 100644
--- a/webapp/components/confirm_modal.jsx
+++ b/webapp/components/confirm_modal.jsx
@@ -4,6 +4,8 @@
import {FormattedMessage} from 'react-intl';
import {Modal} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ConfirmModal extends React.Component {
@@ -71,11 +73,11 @@ ConfirmModal.defaultProps = {
confirmButton: ''
};
ConfirmModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- title: React.PropTypes.node,
- message: React.PropTypes.node,
- confirmButtonClass: React.PropTypes.string,
- confirmButton: React.PropTypes.node,
- onConfirm: React.PropTypes.func.isRequired,
- onCancel: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ title: PropTypes.node,
+ message: PropTypes.node,
+ confirmButtonClass: PropTypes.string,
+ confirmButton: PropTypes.node,
+ onConfirm: PropTypes.func.isRequired,
+ onCancel: PropTypes.func.isRequired
};
diff --git a/webapp/components/create_comment.jsx b/webapp/components/create_comment.jsx
index a9fd69e41..0389af0a2 100644
--- a/webapp/components/create_comment.jsx
+++ b/webapp/components/create_comment.jsx
@@ -30,6 +30,7 @@ const ActionTypes = Constants.ActionTypes;
const KeyCodes = Constants.KeyCodes;
import {REACTION_PATTERN, EMOJI_PATTERN} from './create_post.jsx';
+import PropTypes from 'prop-types';
import React from 'react';
export default class CreateComment extends React.Component {
@@ -659,7 +660,7 @@ export default class CreateComment extends React.Component {
}
CreateComment.propTypes = {
- channelId: React.PropTypes.string.isRequired,
- rootId: React.PropTypes.string.isRequired,
- latestPostId: React.PropTypes.string
+ channelId: PropTypes.string.isRequired,
+ rootId: PropTypes.string.isRequired,
+ latestPostId: PropTypes.string
};
diff --git a/webapp/components/create_team/components/display_name.jsx b/webapp/components/create_team/components/display_name.jsx
index e1b5a678c..333c262d3 100644
--- a/webapp/components/create_team/components/display_name.jsx
+++ b/webapp/components/create_team/components/display_name.jsx
@@ -8,6 +8,8 @@ import {cleanUpUrlable} from 'utils/url.jsx';
import logoImage from 'images/logo.png';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
@@ -124,6 +126,6 @@ export default class TeamSignupDisplayNamePage extends React.Component {
}
TeamSignupDisplayNamePage.propTypes = {
- state: React.PropTypes.object,
- updateParent: React.PropTypes.func
+ state: PropTypes.object,
+ updateParent: PropTypes.func
};
diff --git a/webapp/components/create_team/components/team_url.jsx b/webapp/components/create_team/components/team_url.jsx
index 7722d9b31..baae0e09d 100644
--- a/webapp/components/create_team/components/team_url.jsx
+++ b/webapp/components/create_team/components/team_url.jsx
@@ -8,6 +8,8 @@ import * as URL from 'utils/url.jsx';
import logoImage from 'images/logo.png';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
import {Button, Tooltip, OverlayTrigger} from 'react-bootstrap';
@@ -242,6 +244,6 @@ export default class TeamUrl extends React.Component {
}
TeamUrl.propTypes = {
- state: React.PropTypes.object,
- updateParent: React.PropTypes.func
+ state: PropTypes.object,
+ updateParent: PropTypes.func
};
diff --git a/webapp/components/create_team/create_team_controller.jsx b/webapp/components/create_team/create_team_controller.jsx
index 71904a93c..e06ea9465 100644
--- a/webapp/components/create_team/create_team_controller.jsx
+++ b/webapp/components/create_team/create_team_controller.jsx
@@ -8,6 +8,8 @@ import TeamStore from 'stores/team_store.jsx';
import {FormattedMessage} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class CreateTeamController extends React.Component {
@@ -90,5 +92,5 @@ export default class CreateTeamController extends React.Component {
}
CreateTeamController.propTypes = {
- children: React.PropTypes.node
+ children: PropTypes.node
};
diff --git a/webapp/components/delete_channel_modal.jsx b/webapp/components/delete_channel_modal.jsx
index 59d54e804..74ba51a4c 100644
--- a/webapp/components/delete_channel_modal.jsx
+++ b/webapp/components/delete_channel_modal.jsx
@@ -8,6 +8,8 @@ import {FormattedMessage} from 'react-intl';
import {browserHistory} from 'react-router/es6';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {deleteChannel} from 'actions/channel_actions.jsx';
@@ -99,6 +101,6 @@ export default class DeleteChannelModal extends React.Component {
}
DeleteChannelModal.propTypes = {
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired
};
diff --git a/webapp/components/delete_modal_trigger.jsx b/webapp/components/delete_modal_trigger.jsx
index ed30a5467..9a7222ec7 100644
--- a/webapp/components/delete_modal_trigger.jsx
+++ b/webapp/components/delete_modal_trigger.jsx
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
import React from 'react';
import ConfirmModal from './confirm_modal.jsx';
@@ -67,5 +68,5 @@ export default class DeleteModalTrigger extends React.Component {
}
DeleteModalTrigger.propTypes = {
- onDelete: React.PropTypes.func.isRequired
+ onDelete: PropTypes.func.isRequired
};
diff --git a/webapp/components/do_verify_email.jsx b/webapp/components/do_verify_email.jsx
index eeb22e4a8..a8cc4df1c 100644
--- a/webapp/components/do_verify_email.jsx
+++ b/webapp/components/do_verify_email.jsx
@@ -8,6 +8,8 @@ import {browserHistory, Link} from 'react-router/es6';
import {verifyEmail} from 'actions/user_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class DoVerifyEmail extends React.Component {
@@ -75,5 +77,5 @@ export default class DoVerifyEmail extends React.Component {
DoVerifyEmail.defaultProps = {
};
DoVerifyEmail.propTypes = {
- location: React.PropTypes.object.isRequired
+ location: PropTypes.object.isRequired
};
diff --git a/webapp/components/edit_channel_header_modal.jsx b/webapp/components/edit_channel_header_modal.jsx
index 2536e0218..b8278af48 100644
--- a/webapp/components/edit_channel_header_modal.jsx
+++ b/webapp/components/edit_channel_header_modal.jsx
@@ -23,6 +23,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class EditChannelHeaderModal extends React.Component {
@@ -221,8 +223,8 @@ class EditChannelHeaderModal extends React.Component {
EditChannelHeaderModal.propTypes = {
intl: intlShape.isRequired,
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired
};
export default injectIntl(EditChannelHeaderModal);
diff --git a/webapp/components/edit_channel_purpose_modal.jsx b/webapp/components/edit_channel_purpose_modal.jsx
index a9f4d6c3d..c00b30c49 100644
--- a/webapp/components/edit_channel_purpose_modal.jsx
+++ b/webapp/components/edit_channel_purpose_modal.jsx
@@ -6,6 +6,8 @@ import PreferenceStore from 'stores/preference_store.jsx';
import Constants from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -181,6 +183,6 @@ export default class EditChannelPurposeModal extends React.Component {
}
EditChannelPurposeModal.propTypes = {
- channel: React.PropTypes.object,
- onModalDismissed: React.PropTypes.func.isRequired
+ channel: PropTypes.object,
+ onModalDismissed: PropTypes.func.isRequired
};
diff --git a/webapp/components/emoji/components/add_emoji.jsx b/webapp/components/emoji/components/add_emoji.jsx
index fc02be3be..2387ecfff 100644
--- a/webapp/components/emoji/components/add_emoji.jsx
+++ b/webapp/components/emoji/components/add_emoji.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -14,12 +16,12 @@ import SpinnerButton from 'components/spinner_button.jsx';
export default class AddEmoji extends React.Component {
static propTypes = {
- team: React.PropTypes.object,
- user: React.PropTypes.object
+ team: PropTypes.object,
+ user: PropTypes.object
};
static contextTypes = {
- router: React.PropTypes.object.isRequired
+ router: PropTypes.object.isRequired
};
constructor(props) {
diff --git a/webapp/components/emoji/components/delete_emoji_modal.jsx b/webapp/components/emoji/components/delete_emoji_modal.jsx
index 77afd4c01..8b8ad7725 100644
--- a/webapp/components/emoji/components/delete_emoji_modal.jsx
+++ b/webapp/components/emoji/components/delete_emoji_modal.jsx
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -45,5 +46,5 @@ export default class DeleteEmoji extends DeleteModalTrigger {
}
DeleteEmoji.propTypes = {
- onDelete: React.PropTypes.func.isRequired
+ onDelete: PropTypes.func.isRequired
};
diff --git a/webapp/components/emoji/components/emoji_list.jsx b/webapp/components/emoji/components/emoji_list.jsx
index 14ce819b4..f03638601 100644
--- a/webapp/components/emoji/components/emoji_list.jsx
+++ b/webapp/components/emoji/components/emoji_list.jsx
@@ -12,6 +12,8 @@ import {loadEmoji} from 'actions/emoji_actions.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router';
import {FormattedMessage} from 'react-intl';
@@ -19,8 +21,8 @@ import {FormattedMessage} from 'react-intl';
export default class EmojiList extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object
+ team: PropTypes.object,
+ user: PropTypes.object
};
}
diff --git a/webapp/components/emoji/components/emoji_list_item.jsx b/webapp/components/emoji/components/emoji_list_item.jsx
index e8eaec7a0..84f52bc7c 100644
--- a/webapp/components/emoji/components/emoji_list_item.jsx
+++ b/webapp/components/emoji/components/emoji_list_item.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,10 +15,10 @@ import {FormattedMessage} from 'react-intl';
export default class EmojiListItem extends React.Component {
static get propTypes() {
return {
- emoji: React.PropTypes.object.isRequired,
- onDelete: React.PropTypes.func.isRequired,
- filter: React.PropTypes.string,
- creator: React.PropTypes.object.isRequired
+ emoji: PropTypes.object.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ filter: PropTypes.string,
+ creator: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/emoji_picker/components/emoji_picker_category.jsx b/webapp/components/emoji_picker/components/emoji_picker_category.jsx
index 21c59baea..579aaed28 100644
--- a/webapp/components/emoji_picker/components/emoji_picker_category.jsx
+++ b/webapp/components/emoji_picker/components/emoji_picker_category.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -5,10 +7,10 @@ import React from 'react';
export default class EmojiPickerCategory extends React.Component {
static propTypes = {
- category: React.PropTypes.string.isRequired,
- icon: React.PropTypes.node.isRequired,
- onCategoryClick: React.PropTypes.func.isRequired,
- selected: React.PropTypes.bool.isRequired
+ category: PropTypes.string.isRequired,
+ icon: PropTypes.node.isRequired,
+ onCategoryClick: PropTypes.func.isRequired,
+ selected: PropTypes.bool.isRequired
}
constructor(props) {
diff --git a/webapp/components/emoji_picker/components/emoji_picker_item.jsx b/webapp/components/emoji_picker/components/emoji_picker_item.jsx
index dee08e638..3321bf761 100644
--- a/webapp/components/emoji_picker/components/emoji_picker_item.jsx
+++ b/webapp/components/emoji_picker/components/emoji_picker_item.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,12 +9,12 @@ import EmojiStore from 'stores/emoji_store.jsx';
export default class EmojiPickerItem extends React.Component {
static propTypes = {
- emoji: React.PropTypes.object.isRequired,
- onItemOver: React.PropTypes.func.isRequired,
- onItemOut: React.PropTypes.func.isRequired,
- onItemClick: React.PropTypes.func.isRequired,
- onItemUnmount: React.PropTypes.func.isRequired,
- category: React.PropTypes.string.isRequired
+ emoji: PropTypes.object.isRequired,
+ onItemOver: PropTypes.func.isRequired,
+ onItemOut: PropTypes.func.isRequired,
+ onItemClick: PropTypes.func.isRequired,
+ onItemUnmount: PropTypes.func.isRequired,
+ category: PropTypes.string.isRequired
}
constructor(props) {
diff --git a/webapp/components/emoji_picker/components/emoji_picker_preview.jsx b/webapp/components/emoji_picker/components/emoji_picker_preview.jsx
index ccff96e28..914844551 100644
--- a/webapp/components/emoji_picker/components/emoji_picker_preview.jsx
+++ b/webapp/components/emoji_picker/components/emoji_picker_preview.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,7 +11,7 @@ import {FormattedMessage} from 'react-intl';
export default class EmojiPickerPreview extends React.Component {
static propTypes = {
- emoji: React.PropTypes.object
+ emoji: PropTypes.object
}
render() {
diff --git a/webapp/components/emoji_picker/emoji_picker.jsx b/webapp/components/emoji_picker/emoji_picker.jsx
index b4e67df29..e9cddce34 100644
--- a/webapp/components/emoji_picker/emoji_picker.jsx
+++ b/webapp/components/emoji_picker/emoji_picker.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -30,11 +32,11 @@ const CATEGORIES = [
class EmojiPicker extends React.Component {
static propTypes = {
- customEmojis: React.PropTypes.object,
- onEmojiClick: React.PropTypes.func.isRequired,
- pickerLocation: React.PropTypes.string.isRequired,
- emojiOffset: React.PropTypes.number,
- outsideClick: React.PropTypes.func
+ customEmojis: PropTypes.object,
+ onEmojiClick: PropTypes.func.isRequired,
+ pickerLocation: PropTypes.string.isRequired,
+ emojiOffset: PropTypes.number,
+ outsideClick: PropTypes.func
}
constructor(props) {
diff --git a/webapp/components/emoji_picker/emoji_picker_container.jsx b/webapp/components/emoji_picker/emoji_picker_container.jsx
index d352539ab..ab24afcc4 100644
--- a/webapp/components/emoji_picker/emoji_picker_container.jsx
+++ b/webapp/components/emoji_picker/emoji_picker_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,7 +11,7 @@ import EmojiPicker from './emoji_picker.jsx';
export default class EmojiPickerContainer extends React.Component {
static propTypes = {
- onEmojiClick: React.PropTypes.func.isRequred
+ onEmojiClick: PropTypes.func.isRequred
}
constructor(props) {
diff --git a/webapp/components/error_page.jsx b/webapp/components/error_page.jsx
index aae538795..14f6f2488 100644
--- a/webapp/components/error_page.jsx
+++ b/webapp/components/error_page.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
import {Link} from 'react-router/es6';
@@ -12,7 +13,7 @@ import * as Utils from 'utils/utils.jsx';
export default class ErrorPage extends React.Component {
static propTypes = {
- location: React.PropTypes.object.isRequired
+ location: PropTypes.object.isRequired
};
constructor(props) {
diff --git a/webapp/components/file_attachment.jsx b/webapp/components/file_attachment.jsx
index 616231a6d..0b8bd1042 100644
--- a/webapp/components/file_attachment.jsx
+++ b/webapp/components/file_attachment.jsx
@@ -7,6 +7,8 @@ import * as Utils from 'utils/utils.jsx';
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class FileAttachment extends React.Component {
@@ -172,13 +174,13 @@ export default class FileAttachment extends React.Component {
}
FileAttachment.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
+ fileInfo: PropTypes.object.isRequired,
// the index of this attachment preview in the parent FileAttachmentList
- index: React.PropTypes.number.isRequired,
+ index: PropTypes.number.isRequired,
// handler for when the thumbnail is clicked passed the index above
- handleImageClick: React.PropTypes.func,
+ handleImageClick: PropTypes.func,
- compactDisplay: React.PropTypes.bool
+ compactDisplay: PropTypes.bool
};
diff --git a/webapp/components/file_attachment_list.jsx b/webapp/components/file_attachment_list.jsx
index 0ea53c20a..9beacf94c 100644
--- a/webapp/components/file_attachment_list.jsx
+++ b/webapp/components/file_attachment_list.jsx
@@ -5,6 +5,8 @@ import ViewImageModal from './view_image.jsx';
import FileAttachment from './file_attachment.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class FileAttachmentList extends React.Component {
@@ -65,7 +67,7 @@ export default class FileAttachmentList extends React.Component {
}
FileAttachmentList.propTypes = {
- fileCount: React.PropTypes.number.isRequired,
- fileInfos: React.PropTypes.arrayOf(React.PropTypes.object),
- compactDisplay: React.PropTypes.bool
+ fileCount: PropTypes.number.isRequired,
+ fileInfos: PropTypes.arrayOf(PropTypes.object),
+ compactDisplay: PropTypes.bool
};
diff --git a/webapp/components/file_attachment_list_container.jsx b/webapp/components/file_attachment_list_container.jsx
index 77d93f509..4b05e392c 100644
--- a/webapp/components/file_attachment_list_container.jsx
+++ b/webapp/components/file_attachment_list_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -10,8 +12,8 @@ import FileAttachmentList from './file_attachment_list.jsx';
export default class FileAttachmentListContainer extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired,
- compactDisplay: React.PropTypes.bool.isRequired
+ post: PropTypes.object.isRequired,
+ compactDisplay: PropTypes.bool.isRequired
}
constructor(props) {
diff --git a/webapp/components/file_info_preview.jsx b/webapp/components/file_info_preview.jsx
index 2491c986d..4a90c4728 100644
--- a/webapp/components/file_info_preview.jsx
+++ b/webapp/components/file_info_preview.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -54,6 +56,6 @@ export default class FileInfoPreview extends React.Component {
}
FileInfoPreview.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
- fileUrl: React.PropTypes.string.isRequired
+ fileInfo: PropTypes.object.isRequired,
+ fileUrl: PropTypes.string.isRequired
};
diff --git a/webapp/components/file_preview.jsx b/webapp/components/file_preview.jsx
index 1e747b372..3bf05744f 100644
--- a/webapp/components/file_preview.jsx
+++ b/webapp/components/file_preview.jsx
@@ -5,6 +5,8 @@ import FileStore from 'stores/file_store.jsx';
import ReactDOM from 'react-dom';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import loadingGif from 'images/load.gif';
@@ -99,7 +101,7 @@ FilePreview.defaultProps = {
uploadsInProgress: []
};
FilePreview.propTypes = {
- onRemove: React.PropTypes.func.isRequired,
- fileInfos: React.PropTypes.arrayOf(React.PropTypes.object).isRequired,
- uploadsInProgress: React.PropTypes.array
+ onRemove: PropTypes.func.isRequired,
+ fileInfos: PropTypes.arrayOf(PropTypes.object).isRequired,
+ uploadsInProgress: PropTypes.array
};
diff --git a/webapp/components/file_upload.jsx b/webapp/components/file_upload.jsx
index 4ef8cd28c..07aa43a99 100644
--- a/webapp/components/file_upload.jsx
+++ b/webapp/components/file_upload.jsx
@@ -33,6 +33,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
const OverlayTimeout = 500;
@@ -422,19 +424,19 @@ class FileUpload extends React.Component {
FileUpload.propTypes = {
intl: intlShape.isRequired,
- onUploadError: React.PropTypes.func,
- getFileCount: React.PropTypes.func,
- getTarget: React.PropTypes.func.isRequired,
- onClick: React.PropTypes.func,
- onFileUpload: React.PropTypes.func,
- onUploadStart: React.PropTypes.func,
- onFileUploadChange: React.PropTypes.func,
- onTextDrop: React.PropTypes.func,
- channelId: React.PropTypes.string,
- postType: React.PropTypes.string,
- onEmojiClick: React.PropTypes.func,
- navBarName: React.PropTypes.string,
- emojiEnabled: React.PropTypes.bool
+ onUploadError: PropTypes.func,
+ getFileCount: PropTypes.func,
+ getTarget: PropTypes.func.isRequired,
+ onClick: PropTypes.func,
+ onFileUpload: PropTypes.func,
+ onUploadStart: PropTypes.func,
+ onFileUploadChange: PropTypes.func,
+ onTextDrop: PropTypes.func,
+ channelId: PropTypes.string,
+ postType: PropTypes.string,
+ onEmojiClick: PropTypes.func,
+ navBarName: PropTypes.string,
+ emojiEnabled: PropTypes.bool
};
export default injectIntl(FileUpload, {withRef: true});
diff --git a/webapp/components/file_upload_overlay.jsx b/webapp/components/file_upload_overlay.jsx
index 8f0fbee16..865733fe6 100644
--- a/webapp/components/file_upload_overlay.jsx
+++ b/webapp/components/file_upload_overlay.jsx
@@ -3,48 +3,48 @@
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import fileOverlayImage from 'images/filesOverlay.png';
import overlayLogoImage from 'images/logoWhite.png';
-export default class FileUploadOverlay extends React.Component {
- render() {
- var overlayClass = 'file-overlay hidden';
- if (this.props.overlayType === 'right') {
- overlayClass += ' right-file-overlay';
- } else if (this.props.overlayType === 'center') {
- overlayClass += ' center-file-overlay';
- }
+export default function FileUploadOverlay(props) {
+ var overlayClass = 'file-overlay hidden';
+ if (props.overlayType === 'right') {
+ overlayClass += ' right-file-overlay';
+ } else if (props.overlayType === 'center') {
+ overlayClass += ' center-file-overlay';
+ }
- return (
- <div className={overlayClass}>
- <div className='overlay__indent'>
- <div className='overlay__circle'>
- <img
- className='overlay__files'
- src={fileOverlayImage}
- alt='Files'
+ return (
+ <div className={overlayClass}>
+ <div className='overlay__indent'>
+ <div className='overlay__circle'>
+ <img
+ className='overlay__files'
+ src={fileOverlayImage}
+ alt='Files'
+ />
+ <span><i className='fa fa-upload'/>
+ <FormattedMessage
+ id='upload_overlay.info'
+ defaultMessage='Drop a file to upload it.'
/>
- <span><i className='fa fa-upload'/>
- <FormattedMessage
- id='upload_overlay.info'
- defaultMessage='Drop a file to upload it.'
- />
- </span>
- <img
- className='overlay__logo'
- src={overlayLogoImage}
- width='100'
- alt='Logo'
- />
- </div>
+ </span>
+ <img
+ className='overlay__logo'
+ src={overlayLogoImage}
+ width='100'
+ alt='Logo'
+ />
</div>
</div>
- );
- }
+ </div>
+ );
}
FileUploadOverlay.propTypes = {
- overlayType: React.PropTypes.string
+ overlayType: PropTypes.string
};
diff --git a/webapp/components/filtered_user_list.jsx b/webapp/components/filtered_user_list.jsx
index e9d22ef48..cddbc762e 100644
--- a/webapp/components/filtered_user_list.jsx
+++ b/webapp/components/filtered_user_list.jsx
@@ -27,6 +27,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class FilteredUserList extends React.Component {
@@ -232,12 +234,12 @@ FilteredUserList.defaultProps = {
FilteredUserList.propTypes = {
intl: intlShape.isRequired,
- users: React.PropTypes.arrayOf(React.PropTypes.object),
- teamMembers: React.PropTypes.arrayOf(React.PropTypes.object),
- actions: React.PropTypes.arrayOf(React.PropTypes.func),
- actionProps: React.PropTypes.object,
- showTeamToggle: React.PropTypes.bool,
- style: React.PropTypes.object
+ users: PropTypes.arrayOf(PropTypes.object),
+ teamMembers: PropTypes.arrayOf(PropTypes.object),
+ actions: PropTypes.arrayOf(PropTypes.func),
+ actionProps: PropTypes.object,
+ showTeamToggle: PropTypes.bool,
+ style: PropTypes.object
};
export default injectIntl(FilteredUserList);
diff --git a/webapp/components/form_error.jsx b/webapp/components/form_error.jsx
index 6aa378361..b3ac3fef0 100644
--- a/webapp/components/form_error.jsx
+++ b/webapp/components/form_error.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,10 +9,10 @@ export default class FormError extends React.Component {
static get propTypes() {
// accepts either a single error or an array of errors
return {
- type: React.PropTypes.node,
- error: React.PropTypes.node,
- margin: React.PropTypes.bool,
- errors: React.PropTypes.arrayOf(React.PropTypes.node)
+ type: PropTypes.node,
+ error: PropTypes.node,
+ margin: PropTypes.bool,
+ errors: PropTypes.arrayOf(PropTypes.node)
};
}
diff --git a/webapp/components/get_android_app/get_android_app.jsx b/webapp/components/get_android_app/get_android_app.jsx
index aa74d15ec..cf82b1179 100644
--- a/webapp/components/get_android_app/get_android_app.jsx
+++ b/webapp/components/get_android_app/get_android_app.jsx
@@ -9,67 +9,65 @@ import {Link} from 'react-router';
import MattermostIcon from 'images/favicon/android-chrome-192x192.png';
import Nexus6Mockup from 'images/nexus-6p-mockup.png';
-export default class GetAndroidApp extends React.Component {
- render() {
- return (
- <div className='get-app get-android-app'>
- <h1 className='get-app__header'>
- <FormattedMessage
- id='get_app.androidHeader'
- defaultMessage='Mattermost works best if you switch to our Android app'
- />
- </h1>
- <hr/>
- <div>
- <img
- className='get-android-app__icon'
- src={MattermostIcon}
- />
- <div className='get-android-app__app-info'>
- <span className='get-android-app__app-name'>
- <FormattedMessage
- id='get_app.androidAppName'
- defaultMessage='Mattermost for Android'
- />
- </span>
- <span className='get-android-app__app-creator'>
- <FormattedMessage
- id='get_app.mattermostInc'
- defaultMessage='Mattermost, Inc'
- />
- </span>
- </div>
- </div>
- <a
- className='btn btn-primary get-android-app__continue'
- href={global.window.mm_config.AndroidAppDownloadLink}
- >
- <FormattedMessage
- id='get_app.continue'
- defaultMessage='Continue'
- />
- </a>
+export default function GetAndroidApp() {
+ return (
+ <div className='get-app get-android-app'>
+ <h1 className='get-app__header'>
+ <FormattedMessage
+ id='get_app.androidHeader'
+ defaultMessage='Mattermost works best if you switch to our Android app'
+ />
+ </h1>
+ <hr/>
+ <div>
<img
- className='get-app__screenshot'
- src={Nexus6Mockup}
+ className='get-android-app__icon'
+ src={MattermostIcon}
/>
- <span className='get-app__continue-with-browser'>
- <FormattedMessage
- id='get_app.continueWithBrowser'
- defaultMessage='Or {link}'
- values={{
- link: (
- <Link to='/switch_team'>
- <FormattedMessage
- id='get_app.continueWithBrowserLink'
- defaultMessage='continue with browser'
- />
- </Link>
- )
- }}
- />
- </span>
+ <div className='get-android-app__app-info'>
+ <span className='get-android-app__app-name'>
+ <FormattedMessage
+ id='get_app.androidAppName'
+ defaultMessage='Mattermost for Android'
+ />
+ </span>
+ <span className='get-android-app__app-creator'>
+ <FormattedMessage
+ id='get_app.mattermostInc'
+ defaultMessage='Mattermost, Inc'
+ />
+ </span>
+ </div>
</div>
- );
- }
+ <a
+ className='btn btn-primary get-android-app__continue'
+ href={global.window.mm_config.AndroidAppDownloadLink}
+ >
+ <FormattedMessage
+ id='get_app.continue'
+ defaultMessage='Continue'
+ />
+ </a>
+ <img
+ className='get-app__screenshot'
+ src={Nexus6Mockup}
+ />
+ <span className='get-app__continue-with-browser'>
+ <FormattedMessage
+ id='get_app.continueWithBrowser'
+ defaultMessage='Or {link}'
+ values={{
+ link: (
+ <Link to='/switch_team'>
+ <FormattedMessage
+ id='get_app.continueWithBrowserLink'
+ defaultMessage='continue with browser'
+ />
+ </Link>
+ )
+ }}
+ />
+ </span>
+ </div>
+ );
}
diff --git a/webapp/components/get_ios_app/get_ios_app.jsx b/webapp/components/get_ios_app/get_ios_app.jsx
index de715b1fd..3d371ef11 100644
--- a/webapp/components/get_ios_app/get_ios_app.jsx
+++ b/webapp/components/get_ios_app/get_ios_app.jsx
@@ -9,60 +9,58 @@ import {Link} from 'react-router';
import AppStoreButton from 'images/app-store-button.png';
import IPhone6Mockup from 'images/iphone-6-mockup.png';
-export default class GetIosApp extends React.Component {
- render() {
- return (
- <div className='get-app get-ios-app'>
- <h1 className='get-app__header'>
- <FormattedMessage
- id='get_app.iosHeader'
- defaultMessage='Mattermost works best if you switch to our iPhone app'
- />
- </h1>
- <hr/>
- <a
- className='get-ios-app__app-store-link'
- href={global.window.mm_config.IosAppDownloadLink}
- rel='noopener noreferrer'
- >
- <img src={AppStoreButton}/>
- </a>
- <img
- className='get-app__screenshot'
- src={IPhone6Mockup}
+export default function GetIosApp() {
+ return (
+ <div className='get-app get-ios-app'>
+ <h1 className='get-app__header'>
+ <FormattedMessage
+ id='get_app.iosHeader'
+ defaultMessage='Mattermost works best if you switch to our iPhone app'
/>
- <h2 className='get-ios-app__already-have-it'>
- <FormattedMessage
- id='get_app.alreadyHaveIt'
- defaultMessage='Already have it?'
- />
- </h2>
- <a
- className='btn btn-primary get-ios-app__open-mattermost'
- href='mattermost://'
- >
- <FormattedMessage
- id='get_app.openMattermost'
- defaultMessage='Open Mattermost'
- />
- </a>
- <span className='get-app__continue-with-browser'>
- <FormattedMessage
- id='get_app.continueWithBrowser'
- defaultMessage='Or {link}'
- values={{
- link: (
- <Link to='/switch_team'>
- <FormattedMessage
- id='get_app.continueWithBrowserLink'
- defaultMessage='continue with browser'
- />
- </Link>
- )
- }}
- />
- </span>
- </div>
- );
- }
+ </h1>
+ <hr/>
+ <a
+ className='get-ios-app__app-store-link'
+ href={global.window.mm_config.IosAppDownloadLink}
+ rel='noopener noreferrer'
+ >
+ <img src={AppStoreButton}/>
+ </a>
+ <img
+ className='get-app__screenshot'
+ src={IPhone6Mockup}
+ />
+ <h2 className='get-ios-app__already-have-it'>
+ <FormattedMessage
+ id='get_app.alreadyHaveIt'
+ defaultMessage='Already have it?'
+ />
+ </h2>
+ <a
+ className='btn btn-primary get-ios-app__open-mattermost'
+ href='mattermost://'
+ >
+ <FormattedMessage
+ id='get_app.openMattermost'
+ defaultMessage='Open Mattermost'
+ />
+ </a>
+ <span className='get-app__continue-with-browser'>
+ <FormattedMessage
+ id='get_app.continueWithBrowser'
+ defaultMessage='Or {link}'
+ values={{
+ link: (
+ <Link to='/switch_team'>
+ <FormattedMessage
+ id='get_app.continueWithBrowserLink'
+ defaultMessage='continue with browser'
+ />
+ </Link>
+ )
+ }}
+ />
+ </span>
+ </div>
+ );
}
diff --git a/webapp/components/get_link_modal.jsx b/webapp/components/get_link_modal.jsx
index a7ce31f53..f9866c500 100644
--- a/webapp/components/get_link_modal.jsx
+++ b/webapp/components/get_link_modal.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -125,11 +127,11 @@ export default class GetLinkModal extends React.Component {
}
GetLinkModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- onHide: React.PropTypes.func.isRequired,
- title: React.PropTypes.string.isRequired,
- helpText: React.PropTypes.string,
- link: React.PropTypes.string.isRequired
+ show: PropTypes.bool.isRequired,
+ onHide: PropTypes.func.isRequired,
+ title: PropTypes.string.isRequired,
+ helpText: PropTypes.string,
+ link: PropTypes.string.isRequired
};
GetLinkModal.defaultProps = {
diff --git a/webapp/components/header_footer_template.jsx b/webapp/components/header_footer_template.jsx
index 6fb9c9046..9f6d40631 100644
--- a/webapp/components/header_footer_template.jsx
+++ b/webapp/components/header_footer_template.jsx
@@ -4,6 +4,8 @@
import $ from 'jquery';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class NotLoggedIn extends React.Component {
@@ -104,5 +106,5 @@ NotLoggedIn.defaultProps = {
};
NotLoggedIn.propTypes = {
- children: React.PropTypes.object
+ children: PropTypes.object
};
diff --git a/webapp/components/help/components/attaching.jsx b/webapp/components/help/components/attaching.jsx
index 84c50004d..3013d744d 100644
--- a/webapp/components/help/components/attaching.jsx
+++ b/webapp/components/help/components/attaching.jsx
@@ -8,79 +8,77 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpAttaching extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.attaching.title', '# Attaching Files\n_____'));
- message.push(localizeMessage('help.attaching.methods', '## Attachment Methods\nAttach a file by drag and drop or by clicking the attachment icon in the message input box.'));
- message.push(localizeMessage('help.attaching.dragdrop', '#### Drag and Drop\nUpload a file or selection of files by dragging the files from your computer into the RHS or center pane. Dragging and dropping attaches the files to the message input box, then you can optionally type a message and press **ENTER** to post.'));
- message.push(localizeMessage('help.attaching.icon', '#### Attachment Icon\nAlternatively, upload files by clicking the grey paperclip icon inside the message input box. This opens up your system file viewer where you can navigate to the desired files and then click **Open** to upload the files to the message input box. Optionally type a message and then press **ENTER** to post.'));
- message.push(localizeMessage('help.attaching.pasting', '#### Pasting Images\nOn Chrome and Edge browsers, it is also possible to upload files by pasting them from the clipboard. This is not yet supported on other browsers.'));
- message.push(localizeMessage('help.attaching.previewer', '## File Previewer\nMattermost has a built in file previewer that is used to view media, download files and share public links. Click the thumbnail of an attached file to open it in the file previewer.'));
- message.push('\n');
- message.push(localizeMessage('help.attaching.publicLinks', '#### Sharing Public Links\nPublic links allow you to share file attachments with people outside your Mattermost team. Open the file previewer by clicking on the thumbnail of an attachment, then click **Get Public Link**. This opens a dialog box with a link to copy. When the link is shared and opened by another user, the file will automatically download.'));
- message.push(localizeMessage('help.attaching.publicLinks2', 'If **Get Public Link** is not visible in the file previewer and you prefer the feature enabled, you can request that your System Admin enable the feature from the System Console under **Security** > **Public Links**.'));
- message.push('\n');
- message.push(localizeMessage('help.attaching.downloading', '#### Downloading Files\nDownload an attached file by clicking the download icon next to the file thumbnail or by opening the file previewer and clicking **Download**.'));
- message.push(localizeMessage('help.attaching.supported', '#### Supported Media Types\nIf you are trying to preview a media type that is not supported, the file previewer will open a standard media attachment icon. Supported media formats depend heavily on your browser and operating system, but the following formats are supported by Mattermost on most browsers:'));
- message.push(localizeMessage('help.attaching.supportedList', '- Images: BMP, GIF, JPG, JPEG, PNG\n- Video: MP4\n- Audio: MP3, M4A\n- Documents: PDF'));
- message.push(localizeMessage('help.attaching.notSupported', 'Document preview (Word, Excel, PPT) is not yet supported.'));
- message.push(localizeMessage('help.attaching.limitations', '## File Size Limitations\nMattermost supports a maximum of five attached files per post, each with a maximum file size of 50Mb.'));
+export default function HelpAttaching() {
+ const message = [];
+ message.push(localizeMessage('help.attaching.title', '# Attaching Files\n_____'));
+ message.push(localizeMessage('help.attaching.methods', '## Attachment Methods\nAttach a file by drag and drop or by clicking the attachment icon in the message input box.'));
+ message.push(localizeMessage('help.attaching.dragdrop', '#### Drag and Drop\nUpload a file or selection of files by dragging the files from your computer into the RHS or center pane. Dragging and dropping attaches the files to the message input box, then you can optionally type a message and press **ENTER** to post.'));
+ message.push(localizeMessage('help.attaching.icon', '#### Attachment Icon\nAlternatively, upload files by clicking the grey paperclip icon inside the message input box. This opens up your system file viewer where you can navigate to the desired files and then click **Open** to upload the files to the message input box. Optionally type a message and then press **ENTER** to post.'));
+ message.push(localizeMessage('help.attaching.pasting', '#### Pasting Images\nOn Chrome and Edge browsers, it is also possible to upload files by pasting them from the clipboard. This is not yet supported on other browsers.'));
+ message.push(localizeMessage('help.attaching.previewer', '## File Previewer\nMattermost has a built in file previewer that is used to view media, download files and share public links. Click the thumbnail of an attached file to open it in the file previewer.'));
+ message.push('\n');
+ message.push(localizeMessage('help.attaching.publicLinks', '#### Sharing Public Links\nPublic links allow you to share file attachments with people outside your Mattermost team. Open the file previewer by clicking on the thumbnail of an attachment, then click **Get Public Link**. This opens a dialog box with a link to copy. When the link is shared and opened by another user, the file will automatically download.'));
+ message.push(localizeMessage('help.attaching.publicLinks2', 'If **Get Public Link** is not visible in the file previewer and you prefer the feature enabled, you can request that your System Admin enable the feature from the System Console under **Security** > **Public Links**.'));
+ message.push('\n');
+ message.push(localizeMessage('help.attaching.downloading', '#### Downloading Files\nDownload an attached file by clicking the download icon next to the file thumbnail or by opening the file previewer and clicking **Download**.'));
+ message.push(localizeMessage('help.attaching.supported', '#### Supported Media Types\nIf you are trying to preview a media type that is not supported, the file previewer will open a standard media attachment icon. Supported media formats depend heavily on your browser and operating system, but the following formats are supported by Mattermost on most browsers:'));
+ message.push(localizeMessage('help.attaching.supportedList', '- Images: BMP, GIF, JPG, JPEG, PNG\n- Video: MP4\n- Audio: MP3, M4A\n- Documents: PDF'));
+ message.push(localizeMessage('help.attaching.notSupported', 'Document preview (Word, Excel, PPT) is not yet supported.'));
+ message.push(localizeMessage('help.attaching.limitations', '## File Size Limitations\nMattermost supports a maximum of five attached files per post, each with a maximum file size of 50Mb.'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/messaging'>
- <FormattedMessage
- id='help.link.messaging'
- defaultMessage='Basic Messaging'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/composing'>
- <FormattedMessage
- id='help.link.composing'
- defaultMessage='Composing Messages and Replies'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/mentioning'>
- <FormattedMessage
- id='help.link.mentioning'
- defaultMessage='Mentioning Teammates'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/formatting'>
- <FormattedMessage
- id='help.link.formatting'
- defaultMessage='Formatting Messages using Markdown'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/commands'>
- <FormattedMessage
- id='help.link.commands'
- defaultMessage='Executing Commands'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/messaging'>
+ <FormattedMessage
+ id='help.link.messaging'
+ defaultMessage='Basic Messaging'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/composing'>
+ <FormattedMessage
+ id='help.link.composing'
+ defaultMessage='Composing Messages and Replies'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/mentioning'>
+ <FormattedMessage
+ id='help.link.mentioning'
+ defaultMessage='Mentioning Teammates'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/formatting'>
+ <FormattedMessage
+ id='help.link.formatting'
+ defaultMessage='Formatting Messages using Markdown'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/commands'>
+ <FormattedMessage
+ id='help.link.commands'
+ defaultMessage='Executing Commands'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/components/commands.jsx b/webapp/components/help/components/commands.jsx
index 1c670ed77..41dc736b5 100644
--- a/webapp/components/help/components/commands.jsx
+++ b/webapp/components/help/components/commands.jsx
@@ -8,72 +8,70 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpCommands extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.commands.title', '# Executing Commands\n___'));
- message.push(localizeMessage('help.commands.intro', 'Slash commands perform operations in Mattermost by typing into the text input box. Enter a `/` followed by a command and some arguments to perform actions.\n\nBuilt-in slash commands come with all Mattermost installations and custom slash commands are configurable to interact with external applications. Learn about configuring custom slash commands on the [developer slash command documentation page](http://docs.mattermost.com/developer/slash-commands.html).'));
- message.push(localizeMessage('help.commands.builtin', '## Built-in Commands\nThe following slash commands are available on all Mattermost installations:'));
- message.push('![commands](https://docs.mattermost.com/_images/slashCommandsTable1.PNG)');
- message.push(localizeMessage('help.commands.builtin2', 'Begin by typing `/` and a list of slash command options appears above the text input box. The autocomplete suggestions help by providing a format example in black text and a short description of the slash command in grey text.'));
- message.push('![autocomplete](https://docs.mattermost.com/_images/slashCommandsAutocomplete.PNG)');
- message.push(localizeMessage('help.commands.custom', '## Custom Commands\nCustom slash commands integrate with external applications. For example, a team might configure a custom slash command to check internal health records with `/patient joe smith` or check the weekly weather forecast in a city with `/weather toronto week`. Check with your System Admin or open the autocomplete list by typing `/` to determine if your team configured any custom slash commands.'));
- message.push(localizeMessage('help.commands.custom2', 'Custom slash commands are disabled by default and can be enabled by the System Admin in the **System Console** > **Integrations** > **Webhooks and Commands**. Learn about configuring custom slash commands on the [developer slash command documentation page](http://docs.mattermost.com/developer/slash-commands.html).'));
+export default function HelpCommands() {
+ const message = [];
+ message.push(localizeMessage('help.commands.title', '# Executing Commands\n___'));
+ message.push(localizeMessage('help.commands.intro', 'Slash commands perform operations in Mattermost by typing into the text input box. Enter a `/` followed by a command and some arguments to perform actions.\n\nBuilt-in slash commands come with all Mattermost installations and custom slash commands are configurable to interact with external applications. Learn about configuring custom slash commands on the [developer slash command documentation page](http://docs.mattermost.com/developer/slash-commands.html).'));
+ message.push(localizeMessage('help.commands.builtin', '## Built-in Commands\nThe following slash commands are available on all Mattermost installations:'));
+ message.push('![commands](https://docs.mattermost.com/_images/slashCommandsTable1.PNG)');
+ message.push(localizeMessage('help.commands.builtin2', 'Begin by typing `/` and a list of slash command options appears above the text input box. The autocomplete suggestions help by providing a format example in black text and a short description of the slash command in grey text.'));
+ message.push('![autocomplete](https://docs.mattermost.com/_images/slashCommandsAutocomplete.PNG)');
+ message.push(localizeMessage('help.commands.custom', '## Custom Commands\nCustom slash commands integrate with external applications. For example, a team might configure a custom slash command to check internal health records with `/patient joe smith` or check the weekly weather forecast in a city with `/weather toronto week`. Check with your System Admin or open the autocomplete list by typing `/` to determine if your team configured any custom slash commands.'));
+ message.push(localizeMessage('help.commands.custom2', 'Custom slash commands are disabled by default and can be enabled by the System Admin in the **System Console** > **Integrations** > **Webhooks and Commands**. Learn about configuring custom slash commands on the [developer slash command documentation page](http://docs.mattermost.com/developer/slash-commands.html).'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/messaging'>
- <FormattedMessage
- id='help.link.messaging'
- defaultMessage='Basic Messaging'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/composing'>
- <FormattedMessage
- id='help.link.composing'
- defaultMessage='Composing Messages and Replies'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/mentioning'>
- <FormattedMessage
- id='help.link.mentioning'
- defaultMessage='Mentioning Teammates'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/formatting'>
- <FormattedMessage
- id='help.link.formatting'
- defaultMessage='Formatting Messages using Markdown'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/attaching'>
- <FormattedMessage
- id='help.link.attaching'
- defaultMessage='Attaching Files'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/messaging'>
+ <FormattedMessage
+ id='help.link.messaging'
+ defaultMessage='Basic Messaging'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/composing'>
+ <FormattedMessage
+ id='help.link.composing'
+ defaultMessage='Composing Messages and Replies'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/mentioning'>
+ <FormattedMessage
+ id='help.link.mentioning'
+ defaultMessage='Mentioning Teammates'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/formatting'>
+ <FormattedMessage
+ id='help.link.formatting'
+ defaultMessage='Formatting Messages using Markdown'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/attaching'>
+ <FormattedMessage
+ id='help.link.attaching'
+ defaultMessage='Attaching Files'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/components/composing.jsx b/webapp/components/help/components/composing.jsx
index f3b16c76d..41b620d26 100644
--- a/webapp/components/help/components/composing.jsx
+++ b/webapp/components/help/components/composing.jsx
@@ -8,72 +8,70 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpComposing extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.composing.title', '# Sending Messages\n_____'));
- message.push(localizeMessage('help.composing.types', '## Message Types\nReply to posts to keep conversations organized in threads.'));
- message.push(localizeMessage('help.composing.posts', '#### Posts\nPosts can be considered parent messages. They are the messages that often start a thread of replies. Posts are composed and sent from the text input box at the bottom of the center pane.'));
- message.push(localizeMessage('help.composing.replies', '#### Replies\nReply to a message by clicking the reply icon next to any message text. This action opens the right-hand-side (RHS) where you can see the message thread, then compose and send your reply. Replies are indented slightly in the center pane to indicate that they are child messages of a parent post.\n\nWhen composing a reply in the right-hand side, click the expand/collapse icon with two arrows at the top of the sidebar to make things easier to read.'));
- message.push(localizeMessage('help.composing.posting', '## Posting a Message\nWrite a message by typing into the text input box, then press ENTER to send it. Use SHIFT+ENTER to create a new line without sending a message. To send messages by pressing CTRL+ENTER go to **Main Menu > Account Settings > Send messages on CTRL+ENTER**.'));
- message.push(localizeMessage('help.composing.editing', '## Editing a Message\nEdit a message by clicking the **[...]** icon next to any message text that you’ve composed, then click **Edit**. After making modifications to the message text, press **ENTER** to save the modifications. Message edits do not trigger new @mention notifications, desktop notifications or notification sounds.'));
- message.push(localizeMessage('help.composing.deleting', '## Deleting a message\nDelete a message by clicking the **[...]** icon next to any message text that you’ve composed, then click **Delete**. System and Team Admins can delete any message on their system or team.'));
- message.push(localizeMessage('help.composing.linking', '## Linking to a message\nThe **Permalink** feature creates a link to any message. Sharing this link with other users in the channel lets them view the linked message in the Message Archives. Users who are not a member of the channel where the message was posted cannot view the permalink. Get the permalink to any message by clicking the **[...]** icon next to the message text > **Permalink** > **Copy Link**.'));
+export default function HelpComposing() {
+ const message = [];
+ message.push(localizeMessage('help.composing.title', '# Sending Messages\n_____'));
+ message.push(localizeMessage('help.composing.types', '## Message Types\nReply to posts to keep conversations organized in threads.'));
+ message.push(localizeMessage('help.composing.posts', '#### Posts\nPosts can be considered parent messages. They are the messages that often start a thread of replies. Posts are composed and sent from the text input box at the bottom of the center pane.'));
+ message.push(localizeMessage('help.composing.replies', '#### Replies\nReply to a message by clicking the reply icon next to any message text. This action opens the right-hand-side (RHS) where you can see the message thread, then compose and send your reply. Replies are indented slightly in the center pane to indicate that they are child messages of a parent post.\n\nWhen composing a reply in the right-hand side, click the expand/collapse icon with two arrows at the top of the sidebar to make things easier to read.'));
+ message.push(localizeMessage('help.composing.posting', '## Posting a Message\nWrite a message by typing into the text input box, then press ENTER to send it. Use SHIFT+ENTER to create a new line without sending a message. To send messages by pressing CTRL+ENTER go to **Main Menu > Account Settings > Send messages on CTRL+ENTER**.'));
+ message.push(localizeMessage('help.composing.editing', '## Editing a Message\nEdit a message by clicking the **[...]** icon next to any message text that you’ve composed, then click **Edit**. After making modifications to the message text, press **ENTER** to save the modifications. Message edits do not trigger new @mention notifications, desktop notifications or notification sounds.'));
+ message.push(localizeMessage('help.composing.deleting', '## Deleting a message\nDelete a message by clicking the **[...]** icon next to any message text that you’ve composed, then click **Delete**. System and Team Admins can delete any message on their system or team.'));
+ message.push(localizeMessage('help.composing.linking', '## Linking to a message\nThe **Permalink** feature creates a link to any message. Sharing this link with other users in the channel lets them view the linked message in the Message Archives. Users who are not a member of the channel where the message was posted cannot view the permalink. Get the permalink to any message by clicking the **[...]** icon next to the message text > **Permalink** > **Copy Link**.'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/messaging'>
- <FormattedMessage
- id='help.link.messaging'
- defaultMessage='Basic Messaging'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/mentioning'>
- <FormattedMessage
- id='help.link.mentioning'
- defaultMessage='Mentioning Teammates'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/formatting'>
- <FormattedMessage
- id='help.link.formatting'
- defaultMessage='Formatting Messages using Markdown'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/attaching'>
- <FormattedMessage
- id='help.link.attaching'
- defaultMessage='Attaching Files'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/commands'>
- <FormattedMessage
- id='help.link.commands'
- defaultMessage='Executing Commands'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/messaging'>
+ <FormattedMessage
+ id='help.link.messaging'
+ defaultMessage='Basic Messaging'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/mentioning'>
+ <FormattedMessage
+ id='help.link.mentioning'
+ defaultMessage='Mentioning Teammates'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/formatting'>
+ <FormattedMessage
+ id='help.link.formatting'
+ defaultMessage='Formatting Messages using Markdown'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/attaching'>
+ <FormattedMessage
+ id='help.link.attaching'
+ defaultMessage='Attaching Files'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/commands'>
+ <FormattedMessage
+ id='help.link.commands'
+ defaultMessage='Executing Commands'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/components/formatting.jsx b/webapp/components/help/components/formatting.jsx
index 52ad89772..312df252a 100644
--- a/webapp/components/help/components/formatting.jsx
+++ b/webapp/components/help/components/formatting.jsx
@@ -8,128 +8,126 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpFormatting extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.formatting.title', '# Formatting Text\n_____'));
- message.push(localizeMessage('help.formatting.intro', 'Markdown makes it easy to format messages. Type a message as you normally would, and use these rules to render it with special formatting.'));
- message.push(localizeMessage('help.formatting.style', '## Text Style\n\nYou can use either `_` or `*` around a word to make it italic. Use two to make it bold.\n\n* `_italics_` renders as _italics_\n* `**bold**` renders as **bold**\n* `**_bold-italic_**` renders as **_bold-italics_**\n* `~~strikethrough~~` renders as ~~strikethrough~~'));
- message.push(localizeMessage('help.formatting.code', '## Code Block\n\nCreate a code block by indenting each line by four spaces, or by placing ``` on the line above and below your code.'));
- message.push(localizeMessage('help.formatting.example', 'Example:') + '\n\n');
- message.push(' ```\n ' + localizeMessage('help.formatting.codeBlock', 'code block') + '\n ```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push('```\n' + localizeMessage('help.formatting.codeBlock', 'code block') + '\n```');
- message.push(localizeMessage('help.formatting.syntax', '### Syntax Highlighting\n\nTo add syntax highlighting, type the language to be highlighted after the ``` at the beginning of the code block. Mattermost also offers four different code themes (GitHub, Solarized Dark, Solarized Light, Monokai) that can be changed in **Account Settings** > **Display** > **Theme** > **Custom Theme** > **Center Channel Styles**'));
- message.push(localizeMessage('help.formatting.supportedSyntax', 'Supported languages are:\n`as`, `applescript`, `osascript`, `scpt`, `bash`, `sh`, `zsh`, `clj`, `boot`, `cl2`, `cljc`, `cljs`, `cljs.hl`, `cljscm`, `cljx`, `hic`, `coffee`, `_coffee`, `cake`, `cjsx`, `cson`, `iced`, `cpp`, `c`, `cc`, `h`, `c++`, `h++`, `hpp`, `cs`, `csharp`, `css`, `d`, `di`, `dart`, `delphi`, `dpr`, `dfm`, `pas`, `pascal`, `freepascal`, `lazarus`, `lpr`, `lfm`, `diff`, `django`, `jinja`, `dockerfile`, `docker`, `erl`, `f90`, `f95`, `fsharp`, `fs`, `gcode`, `nc`, `go`, `groovy`, `handlebars`, `hbs`, `html.hbs`, `html.handlebars`, `hs`, `hx`, `java`, `jsp`, `js`, `jsx`, `json`, `jl`, `kt`, `ktm`, `kts`, `less`, `lisp`, `lua`, `mk`, `mak`, `md`, `mkdown`, `mkd`, `matlab`, `m`, `mm`, `objc`, `obj-c`, `ml`, `perl`, `pl`, `php`, `php3`, `php4`, `php5`, `php6`, `ps`, `ps1`, `pp`, `py`, `gyp`, `r`, `ruby`, `rb`, `gemspec`, `podspec`, `thor`, `irb`, `rs`, `scala`, `scm`, `sld`, `scss`, `st`, `sql`, `swift`, `tex`, `vbnet`, `vb`, `bas`, `vbs`, `v`, `veo`, `xml`, `html`, `xhtml`, `rss`, `atom`, `xsl`, `plist`, `yaml`'));
- message.push(localizeMessage('help.formatting.example', 'Example:') + '\n\n');
- message.push(' ```go\n' + localizeMessage('help.formatting.syntaxEx', ' package main\n import "fmt"\n func main() {\n fmt.Println("Hello, 世界")\n }') + '\n ```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.githubTheme', '**GitHub Theme**'));
- message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-github.PNG)');
- message.push(localizeMessage('help.formatting.solirizedDarkTheme', '**Solarized Dark Theme**'));
- message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-sol-dark.PNG)');
- message.push(localizeMessage('help.formatting.solirizedLightTheme', '**Solarized Light Theme**'));
- message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-sol-light.PNG)');
- message.push(localizeMessage('help.formatting.monokaiTheme', '**Monokai Theme**'));
- message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-monokai.PNG)');
- message.push(localizeMessage('help.formatting.inline', '## In-line Code\n\nCreate in-line monospaced font by surrounding it with backticks.'));
- message.push('```\n`monospace`\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:') + ' `monospace`');
- message.push(localizeMessage('help.formatting.links', '## Links\n\nCreate labeled links by putting the desired text in square brackets and the associated link in normal brackets.'));
- message.push('`' + localizeMessage('help.formatting.linkEx', '[Check out Mattermost!](https://about.mattermost.com/)') + '`');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:') + ' ' + localizeMessage('help.formatting.linkEx', '[Check out Mattermost!](https://about.mattermost.com/)'));
- message.push(localizeMessage('help.formatting.images', '## In-line Images\n\nCreate in-line images using an `!` followed by the alt text in square brackets and the link in normal brackets. Add hover text by placing it in quotes after the link.'));
- message.push('```\n' + localizeMessage('help.formatting.imagesExample', '![alt text](link "hover text")\n\nand\n\n[![Build Status](https://travis-ci.org/mattermost/platform.svg?branch=master)](https://travis-ci.org/mattermost/platform) [![Github](https://assets-cdn.github.com/favicon.ico)](https://github.com/mattermost/platform)') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.imagesExample', '![alt text](link "hover text")\n\nand\n\n[![Build Status](https://travis-ci.org/mattermost/platform.svg?branch=master)](https://travis-ci.org/mattermost/platform) [![Github](https://assets-cdn.github.com/favicon.ico)](https://github.com/mattermost/platform)'));
- message.push(localizeMessage('help.formatting.emojis', '## Emojis\n\nOpen the emoji autocomplete by typing `:`. A full list of emojis can be found [here](http://www.emoji-cheat-sheet.com/). It is also possible to create your own [Custom Emoji](http://docs.mattermost.com/help/settings/custom-emoji.html) if the emoji you want to use doesn\'t exist.'));
- message.push('```\n' + localizeMessage('help.formatting.emojiExample', ':smile: :+1: :sheep:') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.emojiExample', ':smile: :+1: :sheep:'));
- message.push(localizeMessage('help.formatting.lines', '## Lines\n\nCreate a line by using three `*`, `_`, or `-`.'));
- message.push('`***` ' + localizeMessage('help.formatting.renders', 'Renders as:') + '\n***');
- message.push(localizeMessage('help.formatting.quotes', '## Block quotes\n\nCreate block quotes using `>`.'));
- message.push(localizeMessage('help.formatting.quotesExample', '`> block quotes` renders as:'));
- message.push(localizeMessage('help.formatting.quotesRender', '> block quotes'));
- message.push(localizeMessage('help.formatting.lists', '## Lists\n\nCreate a list by using `*` or `-` as bullets. Indent a bullet point by adding two spaces in front of it.'));
- message.push('```\n' + localizeMessage('help.formatting.listExample', '* list item one\n* list item two\n * item two sub-point') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.listExample', '* list item one\n* list item two\n * item two sub-point'));
- message.push(localizeMessage('help.formatting.ordered', 'Make it an ordered list by using numbers instead:'));
- message.push('```\n' + localizeMessage('help.formatting.orderedExample', '1. Item one\n2. Item two') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.orderedExample', '1. Item one\n2. Item two'));
- message.push(localizeMessage('help.formatting.checklist', 'Make a task list by including square brackets:'));
- message.push('```\n' + localizeMessage('help.formatting.checklistExample', '- [ ] Item one\n- [ ] Item two\n- [x] Completed item') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.checklistExample', '- [ ] Item one\n- [ ] Item two\n- [x] Completed item'));
- message.push(localizeMessage('help.formatting.tables', '## Tables\n\nCreate a table by placing a dashed line under the header row and separating the columns with a pipe `|`. (The columns don’t need to line up exactly for it to work). Choose how to align table columns by including colons `:` within the header row.'));
- message.push('```\n' + localizeMessage('help.formatting.tableExample', '| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ |:---------------:| -----:|\n| Left column 1 | this text | $100 |\n| Left column 2 | is | $10 |\n| Left column 3 | centered | $1 |') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.tableExample', '| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ |:---------------:| -----:|\n| Left column 1 | this text | $100 |\n| Left column 2 | is | $10 |\n| Left column 3 | centered | $1 |'));
- message.push(localizeMessage('help.formatting.headings', '## Headings\n\nMake a heading by typing # and a space before your title. For smaller headings, use more #’s.'));
- message.push('```\n' + localizeMessage('help.formatting.headingsExample', '## Large Heading\n### Smaller Heading\n#### Even Smaller Heading') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.headingsExample', '## Large Heading\n### Smaller Heading\n#### Even Smaller Heading'));
- message.push(localizeMessage('help.formatting.headings2', 'Alternatively, you can underline the text using `===` or `---` to create headings.'));
- message.push('```\n' + localizeMessage('help.formatting.headings2Example', 'Large Heading\n-------------') + '\n```');
- message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
- message.push(localizeMessage('help.formatting.headings2Example', 'Large Heading\n-------------'));
+export default function HelpFormatting() {
+ const message = [];
+ message.push(localizeMessage('help.formatting.title', '# Formatting Text\n_____'));
+ message.push(localizeMessage('help.formatting.intro', 'Markdown makes it easy to format messages. Type a message as you normally would, and use these rules to render it with special formatting.'));
+ message.push(localizeMessage('help.formatting.style', '## Text Style\n\nYou can use either `_` or `*` around a word to make it italic. Use two to make it bold.\n\n* `_italics_` renders as _italics_\n* `**bold**` renders as **bold**\n* `**_bold-italic_**` renders as **_bold-italics_**\n* `~~strikethrough~~` renders as ~~strikethrough~~'));
+ message.push(localizeMessage('help.formatting.code', '## Code Block\n\nCreate a code block by indenting each line by four spaces, or by placing ``` on the line above and below your code.'));
+ message.push(localizeMessage('help.formatting.example', 'Example:') + '\n\n');
+ message.push(' ```\n ' + localizeMessage('help.formatting.codeBlock', 'code block') + '\n ```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push('```\n' + localizeMessage('help.formatting.codeBlock', 'code block') + '\n```');
+ message.push(localizeMessage('help.formatting.syntax', '### Syntax Highlighting\n\nTo add syntax highlighting, type the language to be highlighted after the ``` at the beginning of the code block. Mattermost also offers four different code themes (GitHub, Solarized Dark, Solarized Light, Monokai) that can be changed in **Account Settings** > **Display** > **Theme** > **Custom Theme** > **Center Channel Styles**'));
+ message.push(localizeMessage('help.formatting.supportedSyntax', 'Supported languages are:\n`as`, `applescript`, `osascript`, `scpt`, `bash`, `sh`, `zsh`, `clj`, `boot`, `cl2`, `cljc`, `cljs`, `cljs.hl`, `cljscm`, `cljx`, `hic`, `coffee`, `_coffee`, `cake`, `cjsx`, `cson`, `iced`, `cpp`, `c`, `cc`, `h`, `c++`, `h++`, `hpp`, `cs`, `csharp`, `css`, `d`, `di`, `dart`, `delphi`, `dpr`, `dfm`, `pas`, `pascal`, `freepascal`, `lazarus`, `lpr`, `lfm`, `diff`, `django`, `jinja`, `dockerfile`, `docker`, `erl`, `f90`, `f95`, `fsharp`, `fs`, `gcode`, `nc`, `go`, `groovy`, `handlebars`, `hbs`, `html.hbs`, `html.handlebars`, `hs`, `hx`, `java`, `jsp`, `js`, `jsx`, `json`, `jl`, `kt`, `ktm`, `kts`, `less`, `lisp`, `lua`, `mk`, `mak`, `md`, `mkdown`, `mkd`, `matlab`, `m`, `mm`, `objc`, `obj-c`, `ml`, `perl`, `pl`, `php`, `php3`, `php4`, `php5`, `php6`, `ps`, `ps1`, `pp`, `py`, `gyp`, `r`, `ruby`, `rb`, `gemspec`, `podspec`, `thor`, `irb`, `rs`, `scala`, `scm`, `sld`, `scss`, `st`, `sql`, `swift`, `tex`, `vbnet`, `vb`, `bas`, `vbs`, `v`, `veo`, `xml`, `html`, `xhtml`, `rss`, `atom`, `xsl`, `plist`, `yaml`'));
+ message.push(localizeMessage('help.formatting.example', 'Example:') + '\n\n');
+ message.push(' ```go\n' + localizeMessage('help.formatting.syntaxEx', ' package main\n import "fmt"\n func main() {\n fmt.Println("Hello, 世界")\n }') + '\n ```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.githubTheme', '**GitHub Theme**'));
+ message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-github.PNG)');
+ message.push(localizeMessage('help.formatting.solirizedDarkTheme', '**Solarized Dark Theme**'));
+ message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-sol-dark.PNG)');
+ message.push(localizeMessage('help.formatting.solirizedLightTheme', '**Solarized Light Theme**'));
+ message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-sol-light.PNG)');
+ message.push(localizeMessage('help.formatting.monokaiTheme', '**Monokai Theme**'));
+ message.push('![go syntax-highlighting](https://docs.mattermost.com/_images/syntax-highlighting-monokai.PNG)');
+ message.push(localizeMessage('help.formatting.inline', '## In-line Code\n\nCreate in-line monospaced font by surrounding it with backticks.'));
+ message.push('```\n`monospace`\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:') + ' `monospace`');
+ message.push(localizeMessage('help.formatting.links', '## Links\n\nCreate labeled links by putting the desired text in square brackets and the associated link in normal brackets.'));
+ message.push('`' + localizeMessage('help.formatting.linkEx', '[Check out Mattermost!](https://about.mattermost.com/)') + '`');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:') + ' ' + localizeMessage('help.formatting.linkEx', '[Check out Mattermost!](https://about.mattermost.com/)'));
+ message.push(localizeMessage('help.formatting.images', '## In-line Images\n\nCreate in-line images using an `!` followed by the alt text in square brackets and the link in normal brackets. Add hover text by placing it in quotes after the link.'));
+ message.push('```\n' + localizeMessage('help.formatting.imagesExample', '![alt text](link "hover text")\n\nand\n\n[![Build Status](https://travis-ci.org/mattermost/platform.svg?branch=master)](https://travis-ci.org/mattermost/platform) [![Github](https://assets-cdn.github.com/favicon.ico)](https://github.com/mattermost/platform)') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.imagesExample', '![alt text](link "hover text")\n\nand\n\n[![Build Status](https://travis-ci.org/mattermost/platform.svg?branch=master)](https://travis-ci.org/mattermost/platform) [![Github](https://assets-cdn.github.com/favicon.ico)](https://github.com/mattermost/platform)'));
+ message.push(localizeMessage('help.formatting.emojis', '## Emojis\n\nOpen the emoji autocomplete by typing `:`. A full list of emojis can be found [here](http://www.emoji-cheat-sheet.com/). It is also possible to create your own [Custom Emoji](http://docs.mattermost.com/help/settings/custom-emoji.html) if the emoji you want to use doesn\'t exist.'));
+ message.push('```\n' + localizeMessage('help.formatting.emojiExample', ':smile: :+1: :sheep:') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.emojiExample', ':smile: :+1: :sheep:'));
+ message.push(localizeMessage('help.formatting.lines', '## Lines\n\nCreate a line by using three `*`, `_`, or `-`.'));
+ message.push('`***` ' + localizeMessage('help.formatting.renders', 'Renders as:') + '\n***');
+ message.push(localizeMessage('help.formatting.quotes', '## Block quotes\n\nCreate block quotes using `>`.'));
+ message.push(localizeMessage('help.formatting.quotesExample', '`> block quotes` renders as:'));
+ message.push(localizeMessage('help.formatting.quotesRender', '> block quotes'));
+ message.push(localizeMessage('help.formatting.lists', '## Lists\n\nCreate a list by using `*` or `-` as bullets. Indent a bullet point by adding two spaces in front of it.'));
+ message.push('```\n' + localizeMessage('help.formatting.listExample', '* list item one\n* list item two\n * item two sub-point') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.listExample', '* list item one\n* list item two\n * item two sub-point'));
+ message.push(localizeMessage('help.formatting.ordered', 'Make it an ordered list by using numbers instead:'));
+ message.push('```\n' + localizeMessage('help.formatting.orderedExample', '1. Item one\n2. Item two') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.orderedExample', '1. Item one\n2. Item two'));
+ message.push(localizeMessage('help.formatting.checklist', 'Make a task list by including square brackets:'));
+ message.push('```\n' + localizeMessage('help.formatting.checklistExample', '- [ ] Item one\n- [ ] Item two\n- [x] Completed item') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.checklistExample', '- [ ] Item one\n- [ ] Item two\n- [x] Completed item'));
+ message.push(localizeMessage('help.formatting.tables', '## Tables\n\nCreate a table by placing a dashed line under the header row and separating the columns with a pipe `|`. (The columns don’t need to line up exactly for it to work). Choose how to align table columns by including colons `:` within the header row.'));
+ message.push('```\n' + localizeMessage('help.formatting.tableExample', '| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ |:---------------:| -----:|\n| Left column 1 | this text | $100 |\n| Left column 2 | is | $10 |\n| Left column 3 | centered | $1 |') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.tableExample', '| Left-Aligned | Center Aligned | Right Aligned |\n| :------------ |:---------------:| -----:|\n| Left column 1 | this text | $100 |\n| Left column 2 | is | $10 |\n| Left column 3 | centered | $1 |'));
+ message.push(localizeMessage('help.formatting.headings', '## Headings\n\nMake a heading by typing # and a space before your title. For smaller headings, use more #’s.'));
+ message.push('```\n' + localizeMessage('help.formatting.headingsExample', '## Large Heading\n### Smaller Heading\n#### Even Smaller Heading') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.headingsExample', '## Large Heading\n### Smaller Heading\n#### Even Smaller Heading'));
+ message.push(localizeMessage('help.formatting.headings2', 'Alternatively, you can underline the text using `===` or `---` to create headings.'));
+ message.push('```\n' + localizeMessage('help.formatting.headings2Example', 'Large Heading\n-------------') + '\n```');
+ message.push(localizeMessage('help.formatting.renders', 'Renders as:'));
+ message.push(localizeMessage('help.formatting.headings2Example', 'Large Heading\n-------------'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/messaging'>
- <FormattedMessage
- id='help.link.messaging'
- defaultMessage='Basic Messaging'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/composing'>
- <FormattedMessage
- id='help.link.composing'
- defaultMessage='Composing Messages and Replies'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/mentioning'>
- <FormattedMessage
- id='help.link.mentioning'
- defaultMessage='Mentioning Teammates'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/attaching'>
- <FormattedMessage
- id='help.link.attaching'
- defaultMessage='Attaching Files'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/commands'>
- <FormattedMessage
- id='help.link.commands'
- defaultMessage='Executing Commands'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/messaging'>
+ <FormattedMessage
+ id='help.link.messaging'
+ defaultMessage='Basic Messaging'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/composing'>
+ <FormattedMessage
+ id='help.link.composing'
+ defaultMessage='Composing Messages and Replies'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/mentioning'>
+ <FormattedMessage
+ id='help.link.mentioning'
+ defaultMessage='Mentioning Teammates'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/attaching'>
+ <FormattedMessage
+ id='help.link.attaching'
+ defaultMessage='Attaching Files'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/commands'>
+ <FormattedMessage
+ id='help.link.commands'
+ defaultMessage='Executing Commands'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/components/mentioning.jsx b/webapp/components/help/components/mentioning.jsx
index 83e19d14b..a7aa37bf6 100644
--- a/webapp/components/help/components/mentioning.jsx
+++ b/webapp/components/help/components/mentioning.jsx
@@ -8,74 +8,72 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpMentioning extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.mentioning.title', '# Mentioning Teammates\n_____'));
- message.push(localizeMessage('help.mentioning.mentions', '## @Mentions\nUse @mentions to get the attention of specific team members.'));
- message.push(localizeMessage('help.mentioning.username', '#### @Username\nYou can mention a teammate by using the `@` symbol plus their username to send them a mention notification.\n\nType `@` to bring up a list of team members who can be mentioned. To filter the list, type the first few letters of any username, first name, last name, or nickname. The **Up** and **Down** arrow keys can then be used to scroll through entries in the list, and pressing **ENTER** will select which user to mention. Once selected, the username will automatically replace the full name or nickname.\nThe following example sends a special mention notification to **alice** that alerts her of the channel and message where she has been mentioned. If **alice** is away from Mattermost and has [email notifications](http://docs.mattermost.com/help/getting-started/configuring-notifications.html#email-notifications) turned on, then she will receive an email alert of her mention along with the message text.'));
- message.push('```\n' + localizeMessage('help.mentioning.usernameExample', '@alice how did your interview go with the new candidate?') + '\n```');
- message.push('\n\n ');
- message.push(localizeMessage('help.mentioning.usernameCont', 'If the user you mentioned does not belong to the channel, a System Message will be posted to let you know. This is a temporary message only seen by the person who triggered it. To add the mentioned user to the channel, go to the dropdown menu beside the channel name and select **Add Members**.'));
- message.push(localizeMessage('help.mentioning.channel', '#### @Channel\nYou can mention an entire channel by typing `@channel`. All members of the channel will receive a mention notification that behaves the same way as if the members had been mentioned personally.'));
- message.push('```\n' + localizeMessage('help.mentioning.channelExample', '@channel great work on interviews this week. I think we found some excellent potential candidates!') + '```\n');
- message.push(localizeMessage('help.mentioning.triggers', '## Words That Trigger Mentions\nIn addition to being notified by @username and @channel, you can customize words that trigger mention notifications in **Account Settings** > **Notifications** > **Words that trigger mentions**. By default, you will receive mention notifications on your first name, and you can add more words by typing them into the input box separated by commas. This is useful if you want to be notified of all posts on certain topics, for example, “interviewing” or “marketing”.'));
- message.push(localizeMessage('help.mentioning.recent', '## Recent Mentions\nClick `@` next to the search box to query for your most recent @mentions and words that trigger mentions. Click **Jump** next to a search result in the RHS to jump the center pane to the channel and location of the message with the mention.'));
+export default function HelpMentioning() {
+ const message = [];
+ message.push(localizeMessage('help.mentioning.title', '# Mentioning Teammates\n_____'));
+ message.push(localizeMessage('help.mentioning.mentions', '## @Mentions\nUse @mentions to get the attention of specific team members.'));
+ message.push(localizeMessage('help.mentioning.username', '#### @Username\nYou can mention a teammate by using the `@` symbol plus their username to send them a mention notification.\n\nType `@` to bring up a list of team members who can be mentioned. To filter the list, type the first few letters of any username, first name, last name, or nickname. The **Up** and **Down** arrow keys can then be used to scroll through entries in the list, and pressing **ENTER** will select which user to mention. Once selected, the username will automatically replace the full name or nickname.\nThe following example sends a special mention notification to **alice** that alerts her of the channel and message where she has been mentioned. If **alice** is away from Mattermost and has [email notifications](http://docs.mattermost.com/help/getting-started/configuring-notifications.html#email-notifications) turned on, then she will receive an email alert of her mention along with the message text.'));
+ message.push('```\n' + localizeMessage('help.mentioning.usernameExample', '@alice how did your interview go with the new candidate?') + '\n```');
+ message.push('\n\n ');
+ message.push(localizeMessage('help.mentioning.usernameCont', 'If the user you mentioned does not belong to the channel, a System Message will be posted to let you know. This is a temporary message only seen by the person who triggered it. To add the mentioned user to the channel, go to the dropdown menu beside the channel name and select **Add Members**.'));
+ message.push(localizeMessage('help.mentioning.channel', '#### @Channel\nYou can mention an entire channel by typing `@channel`. All members of the channel will receive a mention notification that behaves the same way as if the members had been mentioned personally.'));
+ message.push('```\n' + localizeMessage('help.mentioning.channelExample', '@channel great work on interviews this week. I think we found some excellent potential candidates!') + '```\n');
+ message.push(localizeMessage('help.mentioning.triggers', '## Words That Trigger Mentions\nIn addition to being notified by @username and @channel, you can customize words that trigger mention notifications in **Account Settings** > **Notifications** > **Words that trigger mentions**. By default, you will receive mention notifications on your first name, and you can add more words by typing them into the input box separated by commas. This is useful if you want to be notified of all posts on certain topics, for example, “interviewing” or “marketing”.'));
+ message.push(localizeMessage('help.mentioning.recent', '## Recent Mentions\nClick `@` next to the search box to query for your most recent @mentions and words that trigger mentions. Click **Jump** next to a search result in the RHS to jump the center pane to the channel and location of the message with the mention.'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/messaging'>
- <FormattedMessage
- id='help.link.messaging'
- defaultMessage='Basic Messaging'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/composing'>
- <FormattedMessage
- id='help.link.composing'
- defaultMessage='Composing Messages and Replies'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/formatting'>
- <FormattedMessage
- id='help.link.formatting'
- defaultMessage='Formatting Messages using Markdown'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/attaching'>
- <FormattedMessage
- id='help.link.attaching'
- defaultMessage='Attaching Files'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/commands'>
- <FormattedMessage
- id='help.link.commands'
- defaultMessage='Executing Commands'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/messaging'>
+ <FormattedMessage
+ id='help.link.messaging'
+ defaultMessage='Basic Messaging'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/composing'>
+ <FormattedMessage
+ id='help.link.composing'
+ defaultMessage='Composing Messages and Replies'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/formatting'>
+ <FormattedMessage
+ id='help.link.formatting'
+ defaultMessage='Formatting Messages using Markdown'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/attaching'>
+ <FormattedMessage
+ id='help.link.attaching'
+ defaultMessage='Attaching Files'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/commands'>
+ <FormattedMessage
+ id='help.link.commands'
+ defaultMessage='Executing Commands'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/components/messaging.jsx b/webapp/components/help/components/messaging.jsx
index 5f26f32ba..a36e8e772 100644
--- a/webapp/components/help/components/messaging.jsx
+++ b/webapp/components/help/components/messaging.jsx
@@ -8,73 +8,71 @@ import {Link} from 'react-router/es6';
import React from 'react';
-export default class HelpMessaging extends React.Component {
- render() {
- const message = [];
- message.push(localizeMessage('help.messaging.title', '# Messaging Basics\n_____'));
- message.push(localizeMessage('help.messaging.write', '**Write messages** using the text input box at the bottom of Mattermost. Press ENTER to send a message. Use SHIFT+ENTER to create a new line without sending a message.'));
- message.push(localizeMessage('help.messaging.reply', '**Reply to messages** by clicking the reply arrow next to the message text.'));
- message.push('![reply arrow](https://docs.mattermost.com/_images/replyIcon.PNG)');
- message.push(localizeMessage('help.messaging.notify', '**Notify teammates** when they are needed by typing `@username`.'));
- message.push(localizeMessage('help.messaging.format', '**Format your messages** using Markdown that supports text styling, headings, links, emoticons, code blocks, block quotes, tables, lists and in-line images.'));
- message.push('![markdown](https://docs.mattermost.com/_images/messagesTable1.PNG)');
- message.push(localizeMessage('help.messaging.emoji', '**Quickly add emoji** by typing ":", which will open an emoji autocomplete. If the existing emoji don\'t cover what you want to express, you can also create your own [Custom Emoji](http://docs.mattermost.com/help/settings/custom-emoji.html).'));
- message.push(localizeMessage('help.messaging.attach', '**Attach files** by dragging and dropping into Mattermost or clicking the attachment icon in the text input box.'));
+export default function HelpMessaging() {
+ const message = [];
+ message.push(localizeMessage('help.messaging.title', '# Messaging Basics\n_____'));
+ message.push(localizeMessage('help.messaging.write', '**Write messages** using the text input box at the bottom of Mattermost. Press ENTER to send a message. Use SHIFT+ENTER to create a new line without sending a message.'));
+ message.push(localizeMessage('help.messaging.reply', '**Reply to messages** by clicking the reply arrow next to the message text.'));
+ message.push('![reply arrow](https://docs.mattermost.com/_images/replyIcon.PNG)');
+ message.push(localizeMessage('help.messaging.notify', '**Notify teammates** when they are needed by typing `@username`.'));
+ message.push(localizeMessage('help.messaging.format', '**Format your messages** using Markdown that supports text styling, headings, links, emoticons, code blocks, block quotes, tables, lists and in-line images.'));
+ message.push('![markdown](https://docs.mattermost.com/_images/messagesTable1.PNG)');
+ message.push(localizeMessage('help.messaging.emoji', '**Quickly add emoji** by typing ":", which will open an emoji autocomplete. If the existing emoji don\'t cover what you want to express, you can also create your own [Custom Emoji](http://docs.mattermost.com/help/settings/custom-emoji.html).'));
+ message.push(localizeMessage('help.messaging.attach', '**Attach files** by dragging and dropping into Mattermost or clicking the attachment icon in the text input box.'));
- return (
- <div>
- <span
- dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ return (
+ <div>
+ <span
+ dangerouslySetInnerHTML={{__html: formatText(message.join('\n\n'))}}
+ />
+ <p className='links'>
+ <FormattedMessage
+ id='help.learnMore'
+ defaultMessage='Learn more about:'
/>
- <p className='links'>
- <FormattedMessage
- id='help.learnMore'
- defaultMessage='Learn more about:'
- />
- </p>
- <ul>
- <li>
- <Link to='/help/composing'>
- <FormattedMessage
- id='help.link.composing'
- defaultMessage='Composing Messages and Replies'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/mentioning'>
- <FormattedMessage
- id='help.link.mentioning'
- defaultMessage='Mentioning Teammates'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/formatting'>
- <FormattedMessage
- id='help.link.formatting'
- defaultMessage='Formatting Messages using Markdown'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/attaching'>
- <FormattedMessage
- id='help.link.attaching'
- defaultMessage='Attaching Files'
- />
- </Link>
- </li>
- <li>
- <Link to='/help/commands'>
- <FormattedMessage
- id='help.link.commands'
- defaultMessage='Executing Commands'
- />
- </Link>
- </li>
- </ul>
- </div>
- );
- }
+ </p>
+ <ul>
+ <li>
+ <Link to='/help/composing'>
+ <FormattedMessage
+ id='help.link.composing'
+ defaultMessage='Composing Messages and Replies'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/mentioning'>
+ <FormattedMessage
+ id='help.link.mentioning'
+ defaultMessage='Mentioning Teammates'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/formatting'>
+ <FormattedMessage
+ id='help.link.formatting'
+ defaultMessage='Formatting Messages using Markdown'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/attaching'>
+ <FormattedMessage
+ id='help.link.attaching'
+ defaultMessage='Attaching Files'
+ />
+ </Link>
+ </li>
+ <li>
+ <Link to='/help/commands'>
+ <FormattedMessage
+ id='help.link.commands'
+ defaultMessage='Executing Commands'
+ />
+ </Link>
+ </li>
+ </ul>
+ </div>
+ );
}
diff --git a/webapp/components/help/help_controller.jsx b/webapp/components/help/help_controller.jsx
index 2e21861c1..b58a93320 100644
--- a/webapp/components/help/help_controller.jsx
+++ b/webapp/components/help/help_controller.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,7 +9,7 @@ import ReactDOM from 'react-dom';
export default class HelpController extends React.Component {
static get propTypes() {
return {
- children: React.PropTypes.node.isRequired
+ children: PropTypes.node.isRequired
};
}
diff --git a/webapp/components/integrations/components/abstract_incoming_webhook.jsx b/webapp/components/integrations/components/abstract_incoming_webhook.jsx
index a4d9e94f4..9c73ae6d6 100644
--- a/webapp/components/integrations/components/abstract_incoming_webhook.jsx
+++ b/webapp/components/integrations/components/abstract_incoming_webhook.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,7 +15,7 @@ import {Link} from 'react-router/es6';
export default class AbstractIncomingWebhook extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object
+ team: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/abstract_outgoing_webhook.jsx b/webapp/components/integrations/components/abstract_outgoing_webhook.jsx
index 46178adde..9f3902e2c 100644
--- a/webapp/components/integrations/components/abstract_outgoing_webhook.jsx
+++ b/webapp/components/integrations/components/abstract_outgoing_webhook.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -15,7 +17,7 @@ import SpinnerButton from 'components/spinner_button.jsx';
export default class AbstractOutgoingWebhook extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object
+ team: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/add_command.jsx b/webapp/components/integrations/components/add_command.jsx
index 31f99976c..204b45ca4 100644
--- a/webapp/components/integrations/components/add_command.jsx
+++ b/webapp/components/integrations/components/add_command.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -19,7 +21,7 @@ const REQUEST_GET = 'G';
export default class AddCommand extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object
+ team: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/add_oauth_app.jsx b/webapp/components/integrations/components/add_oauth_app.jsx
index 4d91caf76..a74d577c3 100644
--- a/webapp/components/integrations/components/add_oauth_app.jsx
+++ b/webapp/components/integrations/components/add_oauth_app.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -14,7 +16,7 @@ import SpinnerButton from 'components/spinner_button.jsx';
export default class AddOAuthApp extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object
+ team: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/commands_container.jsx b/webapp/components/integrations/components/commands_container.jsx
index 29d1e9b33..a831bc8f2 100644
--- a/webapp/components/integrations/components/commands_container.jsx
+++ b/webapp/components/integrations/components/commands_container.jsx
@@ -6,15 +6,17 @@ import UserStore from 'stores/user_store.jsx';
import {loadTeamCommands} from 'actions/integration_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class CommandsContainer extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object,
- children: React.PropTypes.node.isRequired,
- isAdmin: React.PropTypes.bool
+ team: PropTypes.object,
+ user: PropTypes.object,
+ children: PropTypes.node.isRequired,
+ isAdmin: PropTypes.bool
};
}
diff --git a/webapp/components/integrations/components/confirm_integration.jsx b/webapp/components/integrations/components/confirm_integration.jsx
index 70dc787e1..30f6034d5 100644
--- a/webapp/components/integrations/components/confirm_integration.jsx
+++ b/webapp/components/integrations/components/confirm_integration.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -15,9 +17,9 @@ import Constants from 'utils/constants.jsx';
export default class ConfirmIntegration extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- location: React.PropTypes.object,
- loading: React.PropTypes.bool
+ team: PropTypes.object,
+ location: PropTypes.object,
+ loading: PropTypes.bool
};
}
diff --git a/webapp/components/integrations/components/delete_integration.jsx b/webapp/components/integrations/components/delete_integration.jsx
index 06ef7802a..592f415d6 100644
--- a/webapp/components/integrations/components/delete_integration.jsx
+++ b/webapp/components/integrations/components/delete_integration.jsx
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -45,6 +46,6 @@ export default class DeleteIntegration extends DeleteModalTrigger {
}
DeleteIntegration.propTypes = {
- messageId: React.PropTypes.string.isRequired,
- onDelete: React.PropTypes.func.isRequired
+ messageId: PropTypes.string.isRequired,
+ onDelete: PropTypes.func.isRequired
};
diff --git a/webapp/components/integrations/components/edit_command.jsx b/webapp/components/integrations/components/edit_command.jsx
index 7979f659d..f4c05e4eb 100644
--- a/webapp/components/integrations/components/edit_command.jsx
+++ b/webapp/components/integrations/components/edit_command.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -23,8 +25,8 @@ const REQUEST_GET = 'G';
export default class EditCommand extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- location: React.PropTypes.object
+ team: PropTypes.object,
+ location: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/installed_command.jsx b/webapp/components/integrations/components/installed_command.jsx
index 60ea116cb..691ae75fb 100644
--- a/webapp/components/integrations/components/installed_command.jsx
+++ b/webapp/components/integrations/components/installed_command.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -10,13 +12,13 @@ import DeleteIntegration from './delete_integration.jsx';
export default class InstalledCommand extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object.isRequired,
- command: React.PropTypes.object.isRequired,
- onRegenToken: React.PropTypes.func.isRequired,
- onDelete: React.PropTypes.func.isRequired,
- filter: React.PropTypes.string,
- creator: React.PropTypes.object.isRequired,
- canChange: React.PropTypes.bool.isRequired
+ team: PropTypes.object.isRequired,
+ command: PropTypes.object.isRequired,
+ onRegenToken: PropTypes.func.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ filter: PropTypes.string,
+ creator: PropTypes.object.isRequired,
+ canChange: PropTypes.bool.isRequired
};
}
diff --git a/webapp/components/integrations/components/installed_commands.jsx b/webapp/components/integrations/components/installed_commands.jsx
index 27d91f204..9d7b16c88 100644
--- a/webapp/components/integrations/components/installed_commands.jsx
+++ b/webapp/components/integrations/components/installed_commands.jsx
@@ -7,18 +7,20 @@ import InstalledCommand from './installed_command.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class InstalledCommands extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object,
- users: React.PropTypes.object,
- commands: React.PropTypes.array,
- loading: React.PropTypes.bool,
- isAdmin: React.PropTypes.bool
+ team: PropTypes.object,
+ user: PropTypes.object,
+ users: PropTypes.object,
+ commands: PropTypes.array,
+ loading: PropTypes.bool,
+ isAdmin: PropTypes.bool
};
}
diff --git a/webapp/components/integrations/components/installed_incoming_webhook.jsx b/webapp/components/integrations/components/installed_incoming_webhook.jsx
index 68ac7b7ed..241205b3f 100644
--- a/webapp/components/integrations/components/installed_incoming_webhook.jsx
+++ b/webapp/components/integrations/components/installed_incoming_webhook.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -14,12 +16,12 @@ import {Link} from 'react-router';
export default class InstalledIncomingWebhook extends React.Component {
static get propTypes() {
return {
- incomingWebhook: React.PropTypes.object.isRequired,
- onDelete: React.PropTypes.func.isRequired,
- filter: React.PropTypes.string,
- creator: React.PropTypes.object.isRequired,
- canChange: React.PropTypes.bool.isRequired,
- team: React.PropTypes.object.isRequired
+ incomingWebhook: PropTypes.object.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ filter: PropTypes.string,
+ creator: PropTypes.object.isRequired,
+ canChange: PropTypes.bool.isRequired,
+ team: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/integrations/components/installed_incoming_webhooks.jsx b/webapp/components/integrations/components/installed_incoming_webhooks.jsx
index 93ebf3066..5667979e1 100644
--- a/webapp/components/integrations/components/installed_incoming_webhooks.jsx
+++ b/webapp/components/integrations/components/installed_incoming_webhooks.jsx
@@ -14,15 +14,17 @@ import {loadIncomingHooks} from 'actions/integration_actions.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class InstalledIncomingWebhooks extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object,
- isAdmin: React.PropTypes.bool
+ team: PropTypes.object,
+ user: PropTypes.object,
+ isAdmin: PropTypes.bool
};
}
diff --git a/webapp/components/integrations/components/installed_oauth_app.jsx b/webapp/components/integrations/components/installed_oauth_app.jsx
index 01cf345f4..100d82043 100644
--- a/webapp/components/integrations/components/installed_oauth_app.jsx
+++ b/webapp/components/integrations/components/installed_oauth_app.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -17,9 +19,9 @@ const FAKE_SECRET = '***************';
export default class InstalledOAuthApp extends React.Component {
static get propTypes() {
return {
- oauthApp: React.PropTypes.object.isRequired,
- onDelete: React.PropTypes.func.isRequired,
- filter: React.PropTypes.string
+ oauthApp: PropTypes.object.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ filter: PropTypes.string
};
}
diff --git a/webapp/components/integrations/components/installed_oauth_apps.jsx b/webapp/components/integrations/components/installed_oauth_apps.jsx
index 8a0b4678c..33494c464 100644
--- a/webapp/components/integrations/components/installed_oauth_apps.jsx
+++ b/webapp/components/integrations/components/installed_oauth_apps.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -15,7 +17,7 @@ import InstalledOAuthApp from './installed_oauth_app.jsx';
export default class InstalledOAuthApps extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object
+ team: PropTypes.object
};
}
diff --git a/webapp/components/integrations/components/installed_outgoing_webhook.jsx b/webapp/components/integrations/components/installed_outgoing_webhook.jsx
index c840b1fa9..70c606b97 100644
--- a/webapp/components/integrations/components/installed_outgoing_webhook.jsx
+++ b/webapp/components/integrations/components/installed_outgoing_webhook.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -13,13 +15,13 @@ import DeleteIntegration from './delete_integration.jsx';
export default class InstalledOutgoingWebhook extends React.Component {
static get propTypes() {
return {
- outgoingWebhook: React.PropTypes.object.isRequired,
- onRegenToken: React.PropTypes.func.isRequired,
- onDelete: React.PropTypes.func.isRequired,
- filter: React.PropTypes.string,
- creator: React.PropTypes.object.isRequired,
- canChange: React.PropTypes.bool.isRequired,
- team: React.PropTypes.object.isRequired
+ outgoingWebhook: PropTypes.object.isRequired,
+ onRegenToken: PropTypes.func.isRequired,
+ onDelete: PropTypes.func.isRequired,
+ filter: PropTypes.string,
+ creator: PropTypes.object.isRequired,
+ canChange: PropTypes.bool.isRequired,
+ team: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/integrations/components/installed_outgoing_webhooks.jsx b/webapp/components/integrations/components/installed_outgoing_webhooks.jsx
index bcf203b2a..0750b5157 100644
--- a/webapp/components/integrations/components/installed_outgoing_webhooks.jsx
+++ b/webapp/components/integrations/components/installed_outgoing_webhooks.jsx
@@ -14,15 +14,17 @@ import {loadOutgoingHooks} from 'actions/integration_actions.jsx';
import * as Utils from 'utils/utils.jsx';
import * as AsyncClient from 'utils/async_client.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class InstalledOutgoingWebhooks extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object,
- isAdmin: React.PropTypes.bool
+ team: PropTypes.object,
+ user: PropTypes.object,
+ isAdmin: PropTypes.bool
};
}
diff --git a/webapp/components/integrations/components/integration_option.jsx b/webapp/components/integrations/components/integration_option.jsx
index 49474d939..dc411cb07 100644
--- a/webapp/components/integrations/components/integration_option.jsx
+++ b/webapp/components/integrations/components/integration_option.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,10 +10,10 @@ import {Link} from 'react-router/es6';
export default class IntegrationOption extends React.Component {
static get propTypes() {
return {
- image: React.PropTypes.string.isRequired,
- title: React.PropTypes.node.isRequired,
- description: React.PropTypes.node.isRequired,
- link: React.PropTypes.string.isRequired
+ image: PropTypes.string.isRequired,
+ title: PropTypes.node.isRequired,
+ description: PropTypes.node.isRequired,
+ link: PropTypes.string.isRequired
};
}
diff --git a/webapp/components/integrations/components/integrations.jsx b/webapp/components/integrations/components/integrations.jsx
index 4d6c5e919..6fe809086 100644
--- a/webapp/components/integrations/components/integrations.jsx
+++ b/webapp/components/integrations/components/integrations.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -16,8 +18,8 @@ import * as Utils from 'utils/utils.jsx';
export default class Integrations extends React.Component {
static get propTypes() {
return {
- team: React.PropTypes.object,
- user: React.PropTypes.object
+ team: PropTypes.object,
+ user: PropTypes.object
};
}
diff --git a/webapp/components/loading_screen.jsx b/webapp/components/loading_screen.jsx
index 2807cb0a7..e4821c07b 100644
--- a/webapp/components/loading_screen.jsx
+++ b/webapp/components/loading_screen.jsx
@@ -3,6 +3,8 @@
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class LoadingScreen extends React.Component {
@@ -44,6 +46,6 @@ LoadingScreen.defaultProps = {
position: 'relative'
};
LoadingScreen.propTypes = {
- position: React.PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'inherit']),
- message: React.PropTypes.node
+ position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'inherit']),
+ message: PropTypes.node
};
diff --git a/webapp/components/logged_in.jsx b/webapp/components/logged_in.jsx
index 3dfab57b3..8d753b13f 100644
--- a/webapp/components/logged_in.jsx
+++ b/webapp/components/logged_in.jsx
@@ -16,6 +16,7 @@ import Constants from 'utils/constants.jsx';
const BACKSPACE_CHAR = 8;
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
// import the EmojiStore so that it'll register to receive the results of the listEmojis call further down
@@ -157,5 +158,5 @@ export default class LoggedIn extends React.Component {
}
LoggedIn.propTypes = {
- children: React.PropTypes.object
+ children: PropTypes.object
};
diff --git a/webapp/components/login/components/login_mfa.jsx b/webapp/components/login/components/login_mfa.jsx
index f945d3e07..3d8d1edc4 100644
--- a/webapp/components/login/components/login_mfa.jsx
+++ b/webapp/components/login/components/login_mfa.jsx
@@ -5,6 +5,8 @@ import * as Utils from 'utils/utils.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class LoginMfa extends React.Component {
@@ -87,7 +89,7 @@ LoginMfa.defaultProps = {
};
LoginMfa.propTypes = {
- loginId: React.PropTypes.string.isRequired,
- password: React.PropTypes.string.isRequired,
- submit: React.PropTypes.func.isRequired
+ loginId: PropTypes.string.isRequired,
+ password: PropTypes.string.isRequired,
+ submit: PropTypes.func.isRequired
};
diff --git a/webapp/components/login/login_controller.jsx b/webapp/components/login/login_controller.jsx
index 4b6757294..c9930c406 100644
--- a/webapp/components/login/login_controller.jsx
+++ b/webapp/components/login/login_controller.jsx
@@ -21,14 +21,16 @@ import Constants from 'utils/constants.jsx';
import {FormattedMessage} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
+import PropTypes from 'prop-types';
+
import React from 'react';
import logoImage from 'images/logo.png';
export default class LoginController extends React.Component {
static get propTypes() {
return {
- location: React.PropTypes.object.isRequired,
- params: React.PropTypes.object.isRequired
+ location: PropTypes.object.isRequired,
+ params: PropTypes.object.isRequired
};
}
diff --git a/webapp/components/member_list_channel/member_list_channel.jsx b/webapp/components/member_list_channel/member_list_channel.jsx
index af2304433..8dbdd37f2 100644
--- a/webapp/components/member_list_channel/member_list_channel.jsx
+++ b/webapp/components/member_list_channel/member_list_channel.jsx
@@ -14,6 +14,8 @@ import Constants from 'utils/constants.jsx';
import * as UserAgent from 'utils/user_agent.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import store from 'stores/redux_store.jsx';
@@ -23,9 +25,9 @@ const USERS_PER_PAGE = 50;
export default class MemberListChannel extends React.Component {
static propTypes = {
- channel: React.PropTypes.object.isRequired,
- actions: React.PropTypes.shape({
- getChannelStats: React.PropTypes.func.isRequired
+ channel: PropTypes.object.isRequired,
+ actions: PropTypes.shape({
+ getChannelStats: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/member_list_team/member_list_team.jsx b/webapp/components/member_list_team/member_list_team.jsx
index bce6ade1b..60342ab83 100644
--- a/webapp/components/member_list_team/member_list_team.jsx
+++ b/webapp/components/member_list_team/member_list_team.jsx
@@ -13,6 +13,8 @@ import Constants from 'utils/constants.jsx';
import * as UserAgent from 'utils/user_agent.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import store from 'stores/redux_store.jsx';
@@ -22,9 +24,9 @@ const USERS_PER_PAGE = 50;
export default class MemberListTeam extends React.Component {
static propTypes = {
- isAdmin: React.PropTypes.bool,
- actions: React.PropTypes.shape({
- getTeamStats: React.PropTypes.func.isRequired
+ isAdmin: PropTypes.bool,
+ actions: PropTypes.shape({
+ getTeamStats: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/message_wrapper.jsx b/webapp/components/message_wrapper.jsx
index 95205de82..22f409783 100644
--- a/webapp/components/message_wrapper.jsx
+++ b/webapp/components/message_wrapper.jsx
@@ -5,6 +5,8 @@ import * as TextFormatting from 'utils/text_formatting.jsx';
import * as Utils from 'utils/utils.jsx';
import {getSiteURL} from 'utils/url.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class MessageWrapper extends React.Component {
@@ -35,6 +37,6 @@ MessageWrapper.defaultProps = {
message: ''
};
MessageWrapper.propTypes = {
- message: React.PropTypes.string,
- options: React.PropTypes.object
+ message: PropTypes.string,
+ options: PropTypes.object
};
diff --git a/webapp/components/mfa/mfa_controller.jsx b/webapp/components/mfa/mfa_controller.jsx
index 5c41fdfbb..a3d098abd 100644
--- a/webapp/components/mfa/mfa_controller.jsx
+++ b/webapp/components/mfa/mfa_controller.jsx
@@ -3,6 +3,8 @@
import {emitUserLoggedOutEvent} from 'actions/global_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
@@ -82,6 +84,6 @@ export default class MFAController extends React.Component {
MFAController.defaultProps = {
};
MFAController.propTypes = {
- location: React.PropTypes.object.isRequired,
- children: React.PropTypes.node
+ location: PropTypes.object.isRequired,
+ children: PropTypes.node
};
diff --git a/webapp/components/more_channels/more_channels.jsx b/webapp/components/more_channels/more_channels.jsx
index 4a1d487c0..3ba8f41c0 100644
--- a/webapp/components/more_channels/more_channels.jsx
+++ b/webapp/components/more_channels/more_channels.jsx
@@ -11,6 +11,8 @@ import Constants from 'utils/constants.jsx';
import {joinChannel, searchMoreChannels} from 'actions/channel_actions.jsx';
import {showCreateOption} from 'utils/channel_utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
import {Modal} from 'react-bootstrap';
@@ -23,10 +25,10 @@ const SEARCH_TIMEOUT_MILLISECONDS = 100;
export default class MoreChannels extends React.Component {
static propTypes = {
- onModalDismissed: React.PropTypes.func,
- handleNewChannel: React.PropTypes.func,
- actions: React.PropTypes.shape({
- getChannels: React.PropTypes.func.isRequired
+ onModalDismissed: PropTypes.func,
+ handleNewChannel: PropTypes.func,
+ actions: PropTypes.shape({
+ getChannels: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/more_direct_channels/more_direct_channels.jsx b/webapp/components/more_direct_channels/more_direct_channels.jsx
index 16a45aa9a..f4134f077 100644
--- a/webapp/components/more_direct_channels/more_direct_channels.jsx
+++ b/webapp/components/more_direct_channels/more_direct_channels.jsx
@@ -14,6 +14,8 @@ import Constants from 'utils/constants.jsx';
import {displayUsernameForUser} from 'utils/utils.jsx';
import Client from 'client/web_client.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Modal} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -27,11 +29,11 @@ const MAX_SELECTABLE_VALUES = Constants.MAX_USERS_IN_GM - 1;
export default class MoreDirectChannels extends React.Component {
static propTypes = {
- startingUsers: React.PropTypes.arrayOf(React.PropTypes.object),
- onModalDismissed: React.PropTypes.func,
- actions: React.PropTypes.shape({
- getProfiles: React.PropTypes.func.isRequired,
- getProfilesInTeam: React.PropTypes.func.isRequired
+ startingUsers: PropTypes.arrayOf(PropTypes.object),
+ onModalDismissed: PropTypes.func,
+ actions: PropTypes.shape({
+ getProfiles: PropTypes.func.isRequired,
+ getProfilesInTeam: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/msg_typing.jsx b/webapp/components/msg_typing.jsx
index 503af1dc7..ee278c5f6 100644
--- a/webapp/components/msg_typing.jsx
+++ b/webapp/components/msg_typing.jsx
@@ -5,6 +5,8 @@ import UserTypingStore from 'stores/user_typing_store.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
class MsgTyping extends React.Component {
@@ -90,8 +92,8 @@ class MsgTyping extends React.Component {
}
MsgTyping.propTypes = {
- channelId: React.PropTypes.string,
- parentId: React.PropTypes.string
+ channelId: PropTypes.string,
+ parentId: PropTypes.string
};
export default MsgTyping;
diff --git a/webapp/components/multiselect/multiselect.jsx b/webapp/components/multiselect/multiselect.jsx
index c2bf60172..e22e0ac52 100644
--- a/webapp/components/multiselect/multiselect.jsx
+++ b/webapp/components/multiselect/multiselect.jsx
@@ -7,6 +7,8 @@ import {localizeMessage} from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
const KeyCodes = Constants.KeyCodes;
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactSelect from 'react-select';
import {FormattedMessage} from 'react-intl';
@@ -262,18 +264,18 @@ export default class MultiSelect extends React.Component {
}
MultiSelect.propTypes = {
- options: React.PropTypes.arrayOf(React.PropTypes.object),
- optionRenderer: React.PropTypes.func,
- values: React.PropTypes.arrayOf(React.PropTypes.object),
- valueRenderer: React.PropTypes.func,
- handleInput: React.PropTypes.func,
- handleDelete: React.PropTypes.func,
- perPage: React.PropTypes.number,
- handlePageChange: React.PropTypes.func,
- handleAdd: React.PropTypes.func,
- handleSubmit: React.PropTypes.func,
- noteText: React.PropTypes.node,
- maxValues: React.PropTypes.number,
- numRemainingText: React.PropTypes.node,
- buttonSubmitText: React.PropTypes.node
+ options: PropTypes.arrayOf(PropTypes.object),
+ optionRenderer: PropTypes.func,
+ values: PropTypes.arrayOf(PropTypes.object),
+ valueRenderer: PropTypes.func,
+ handleInput: PropTypes.func,
+ handleDelete: PropTypes.func,
+ perPage: PropTypes.number,
+ handlePageChange: PropTypes.func,
+ handleAdd: PropTypes.func,
+ handleSubmit: PropTypes.func,
+ noteText: PropTypes.node,
+ maxValues: PropTypes.number,
+ numRemainingText: PropTypes.node,
+ buttonSubmitText: PropTypes.node
};
diff --git a/webapp/components/multiselect/multiselect_list.jsx b/webapp/components/multiselect/multiselect_list.jsx
index e5faecb5a..4e5878790 100644
--- a/webapp/components/multiselect/multiselect_list.jsx
+++ b/webapp/components/multiselect/multiselect_list.jsx
@@ -5,6 +5,8 @@ import {cmdOrCtrlPressed} from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
const KeyCodes = Constants.KeyCodes;
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -159,11 +161,11 @@ MultiSelectList.defaultProps = {
};
MultiSelectList.propTypes = {
- options: React.PropTypes.arrayOf(React.PropTypes.object),
- optionRenderer: React.PropTypes.func,
- page: React.PropTypes.number,
- perPage: React.PropTypes.number,
- onPageChange: React.PropTypes.func,
- onAdd: React.PropTypes.func,
- onSelect: React.PropTypes.func
+ options: PropTypes.arrayOf(PropTypes.object),
+ optionRenderer: PropTypes.func,
+ page: PropTypes.number,
+ perPage: PropTypes.number,
+ onPageChange: PropTypes.func,
+ onAdd: PropTypes.func,
+ onSelect: PropTypes.func
};
diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx
index 6a306dafd..67b681193 100644
--- a/webapp/components/navbar.jsx
+++ b/webapp/components/navbar.jsx
@@ -41,6 +41,8 @@ import {Popover, OverlayTrigger} from 'react-bootstrap';
import {Link} from 'react-router/es6';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class Navbar extends React.Component {
@@ -934,5 +936,5 @@ Navbar.defaultProps = {
teamDisplayName: ''
};
Navbar.propTypes = {
- teamDisplayName: React.PropTypes.string
+ teamDisplayName: PropTypes.string
};
diff --git a/webapp/components/needs_team/needs_team.jsx b/webapp/components/needs_team/needs_team.jsx
index 6c18ee4e4..aa3ea46e8 100644
--- a/webapp/components/needs_team/needs_team.jsx
+++ b/webapp/components/needs_team/needs_team.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -48,19 +50,19 @@ const UNREAD_CHECK_TIME_MILLISECONDS = 10000;
export default class NeedsTeam extends React.Component {
static propTypes = {
- children: React.PropTypes.oneOfType([
- React.PropTypes.arrayOf(React.PropTypes.element),
- React.PropTypes.element
+ children: PropTypes.oneOfType([
+ PropTypes.arrayOf(PropTypes.element),
+ PropTypes.element
]),
- navbar: React.PropTypes.element,
- sidebar: React.PropTypes.element,
- team_sidebar: React.PropTypes.element,
- center: React.PropTypes.element,
- params: React.PropTypes.object,
- user: React.PropTypes.object,
- actions: React.PropTypes.shape({
- viewChannel: React.PropTypes.func.isRequired,
- getMyChannelMembers: React.PropTypes.func.isRequired
+ navbar: PropTypes.element,
+ sidebar: PropTypes.element,
+ team_sidebar: PropTypes.element,
+ center: PropTypes.element,
+ params: PropTypes.object,
+ user: PropTypes.object,
+ actions: PropTypes.shape({
+ viewChannel: PropTypes.func.isRequired,
+ getMyChannelMembers: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/new_channel_flow.jsx b/webapp/components/new_channel_flow.jsx
index 69c2f1c4c..1a5c77132 100644
--- a/webapp/components/new_channel_flow.jsx
+++ b/webapp/components/new_channel_flow.jsx
@@ -16,6 +16,8 @@ const SHOW_NEW_CHANNEL = 1;
const SHOW_EDIT_URL = 2;
const SHOW_EDIT_URL_THEN_COMPLETE = 3;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class NewChannelFlow extends React.Component {
@@ -239,7 +241,7 @@ NewChannelFlow.defaultProps = {
};
NewChannelFlow.propTypes = {
- show: React.PropTypes.bool.isRequired,
- channelType: React.PropTypes.string.isRequired,
- onModalDismissed: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ channelType: PropTypes.string.isRequired,
+ onModalDismissed: PropTypes.func.isRequired
};
diff --git a/webapp/components/password_reset_form.jsx b/webapp/components/password_reset_form.jsx
index 546dce1b3..5b77cb3e6 100644
--- a/webapp/components/password_reset_form.jsx
+++ b/webapp/components/password_reset_form.jsx
@@ -9,6 +9,8 @@ import {FormattedMessage} from 'react-intl';
import {resetPassword} from 'actions/user_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
class PasswordResetForm extends React.Component {
@@ -122,8 +124,8 @@ class PasswordResetForm extends React.Component {
PasswordResetForm.defaultProps = {
};
PasswordResetForm.propTypes = {
- params: React.PropTypes.object.isRequired,
- location: React.PropTypes.object.isRequired
+ params: PropTypes.object.isRequired,
+ location: PropTypes.object.isRequired
};
export default PasswordResetForm;
diff --git a/webapp/components/password_reset_send_link.jsx b/webapp/components/password_reset_send_link.jsx
index 260ef7250..a301fb7d4 100644
--- a/webapp/components/password_reset_send_link.jsx
+++ b/webapp/components/password_reset_send_link.jsx
@@ -8,6 +8,8 @@ import client from 'client/web_client.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router/es6';
@@ -148,7 +150,7 @@ class PasswordResetSendLink extends React.Component {
PasswordResetSendLink.defaultProps = {
};
PasswordResetSendLink.propTypes = {
- params: React.PropTypes.object.isRequired
+ params: PropTypes.object.isRequired
};
export default PasswordResetSendLink;
diff --git a/webapp/components/pdf_preview.jsx b/webapp/components/pdf_preview.jsx
index 26444fe1f..790355561 100644
--- a/webapp/components/pdf_preview.jsx
+++ b/webapp/components/pdf_preview.jsx
@@ -5,6 +5,8 @@ import FileInfoPreview from './file_info_preview.jsx';
import loadingGif from 'images/load.gif';
+import PropTypes from 'prop-types';
+
import React from 'react';
import PDFJS from 'pdfjs-dist';
import {FormattedMessage} from 'react-intl';
@@ -171,6 +173,6 @@ export default class PDFPreview extends React.Component {
}
PDFPreview.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
- fileUrl: React.PropTypes.string.isRequired
+ fileInfo: PropTypes.object.isRequired,
+ fileUrl: PropTypes.string.isRequired
};
diff --git a/webapp/components/permalink_view.jsx b/webapp/components/permalink_view.jsx
index d57564350..ebcd83916 100644
--- a/webapp/components/permalink_view.jsx
+++ b/webapp/components/permalink_view.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import ChannelHeader from 'components/channel_header.jsx';
@@ -90,5 +91,5 @@ export default class PermalinkView extends React.Component {
}
PermalinkView.propTypes = {
- params: React.PropTypes.object.isRequired
+ params: PropTypes.object.isRequired
};
diff --git a/webapp/components/popover_list_members/popover_list_members.jsx b/webapp/components/popover_list_members/popover_list_members.jsx
index cf6042943..6a3fe737b 100644
--- a/webapp/components/popover_list_members/popover_list_members.jsx
+++ b/webapp/components/popover_list_members/popover_list_members.jsx
@@ -19,6 +19,7 @@ import Constants from 'utils/constants.jsx';
import {canManageMembers} from 'utils/channel_utils.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Popover, Overlay} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
@@ -26,11 +27,11 @@ import {browserHistory} from 'react-router/es6';
export default class PopoverListMembers extends React.Component {
static propTypes = {
- channel: React.PropTypes.object.isRequired,
- members: React.PropTypes.array.isRequired,
- memberCount: React.PropTypes.number,
- actions: React.PropTypes.shape({
- getProfilesInChannel: React.PropTypes.func.isRequired
+ channel: PropTypes.object.isRequired,
+ members: PropTypes.array.isRequired,
+ memberCount: PropTypes.number,
+ actions: PropTypes.shape({
+ getProfilesInChannel: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/post_deleted_modal.jsx b/webapp/components/post_deleted_modal.jsx
index 9f3125ffa..5b5984140 100644
--- a/webapp/components/post_deleted_modal.jsx
+++ b/webapp/components/post_deleted_modal.jsx
@@ -5,6 +5,8 @@ import {FormattedMessage} from 'react-intl';
import {Modal} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PostDeletedModal extends React.Component {
@@ -64,6 +66,6 @@ export default class PostDeletedModal extends React.Component {
}
PostDeletedModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- onHide: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ onHide: PropTypes.func.isRequired
};
diff --git a/webapp/components/post_view/components/commented_on_files_message_container.jsx b/webapp/components/post_view/components/commented_on_files_message_container.jsx
index d1fa455c7..6ba1de3de 100644
--- a/webapp/components/post_view/components/commented_on_files_message_container.jsx
+++ b/webapp/components/post_view/components/commented_on_files_message_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -9,8 +11,8 @@ import * as Utils from 'utils/utils.jsx';
export default class CommentedOnFilesMessageContainer extends React.Component {
static propTypes = {
- parentPostChannelId: React.PropTypes.string.isRequired,
- parentPostId: React.PropTypes.string.isRequired
+ parentPostChannelId: PropTypes.string.isRequired,
+ parentPostId: PropTypes.string.isRequired
}
constructor(props) {
diff --git a/webapp/components/post_view/components/date_separator.jsx b/webapp/components/post_view/components/date_separator.jsx
index 18dc0c7ff..4648f456c 100644
--- a/webapp/components/post_view/components/date_separator.jsx
+++ b/webapp/components/post_view/components/date_separator.jsx
@@ -1,27 +1,26 @@
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedDate} from 'react-intl';
-export default class DateSeparator extends React.Component {
- render() {
- return (
- <div
- className='date-separator'
- >
- <hr className='separator__hr'/>
- <div className='separator__text'>
- <FormattedDate
- value={this.props.date}
- weekday='short'
- month='short'
- day='2-digit'
- year='numeric'
- />
- </div>
+export default function DateSeparator(props) {
+ return (
+ <div
+ className='date-separator'
+ >
+ <hr className='separator__hr'/>
+ <div className='separator__text'>
+ <FormattedDate
+ value={props.date}
+ weekday='short'
+ month='short'
+ day='2-digit'
+ year='numeric'
+ />
</div>
- );
- }
+ </div>
+ );
}
DateSeparator.propTypes = {
- date: React.PropTypes.instanceOf(Date)
+ date: PropTypes.instanceOf(Date)
};
diff --git a/webapp/components/post_view/components/floating_timestamp.jsx b/webapp/components/post_view/components/floating_timestamp.jsx
index d2d26c0bd..34e6ce006 100644
--- a/webapp/components/post_view/components/floating_timestamp.jsx
+++ b/webapp/components/post_view/components/floating_timestamp.jsx
@@ -3,6 +3,8 @@
import {FormattedDate} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
@@ -52,8 +54,8 @@ export default class FloatingTimestamp extends React.Component {
}
FloatingTimestamp.propTypes = {
- isScrolling: React.PropTypes.bool.isRequired,
- isMobile: React.PropTypes.bool,
- createAt: React.PropTypes.number,
- isRhsPost: React.PropTypes.bool
+ isScrolling: PropTypes.bool.isRequired,
+ isMobile: PropTypes.bool,
+ createAt: PropTypes.number,
+ isRhsPost: PropTypes.bool
};
diff --git a/webapp/components/post_view/components/new_message_indicator.jsx b/webapp/components/post_view/components/new_message_indicator.jsx
index 488a38b1b..cafdc128a 100644
--- a/webapp/components/post_view/components/new_message_indicator.jsx
+++ b/webapp/components/post_view/components/new_message_indicator.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
@@ -59,6 +61,6 @@ NewMessageIndicator.defaultProps = {
};
NewMessageIndicator.propTypes = {
- onClick: React.PropTypes.func.isRequired,
- newMessages: React.PropTypes.number
+ onClick: PropTypes.func.isRequired,
+ newMessages: PropTypes.number
};
diff --git a/webapp/components/post_view/components/pending_post_options.jsx b/webapp/components/post_view/components/pending_post_options.jsx
index 0085a16f2..9742a74bf 100644
--- a/webapp/components/post_view/components/pending_post_options.jsx
+++ b/webapp/components/post_view/components/pending_post_options.jsx
@@ -9,6 +9,8 @@ import Constants from 'utils/constants.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PendingPostOptions extends React.Component {
@@ -83,5 +85,5 @@ export default class PendingPostOptions extends React.Component {
}
PendingPostOptions.propTypes = {
- post: React.PropTypes.object
+ post: PropTypes.object
};
diff --git a/webapp/components/post_view/components/post.jsx b/webapp/components/post_view/components/post.jsx
index 38f95a85b..c1b932774 100644
--- a/webapp/components/post_view/components/post.jsx
+++ b/webapp/components/post_view/components/post.jsx
@@ -1,7 +1,9 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
import ProfilePicture from 'components/profile_picture.jsx';
diff --git a/webapp/components/post_view/components/post_attachment.jsx b/webapp/components/post_view/components/post_attachment.jsx
index 930e75b41..e873ef9c7 100644
--- a/webapp/components/post_view/components/post_attachment.jsx
+++ b/webapp/components/post_view/components/post_attachment.jsx
@@ -17,6 +17,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class PostAttachment extends React.Component {
@@ -315,7 +317,7 @@ class PostAttachment extends React.Component {
PostAttachment.propTypes = {
intl: intlShape.isRequired,
- attachment: React.PropTypes.object.isRequired
+ attachment: PropTypes.object.isRequired
};
export default injectIntl(PostAttachment);
diff --git a/webapp/components/post_view/components/post_attachment_list.jsx b/webapp/components/post_view/components/post_attachment_list.jsx
index 5223fb2b3..3d7c0e4cd 100644
--- a/webapp/components/post_view/components/post_attachment_list.jsx
+++ b/webapp/components/post_view/components/post_attachment_list.jsx
@@ -3,28 +3,28 @@
import PostAttachment from './post_attachment.jsx';
-import React from 'react';
+import PropTypes from 'prop-types';
-export default class PostAttachmentList extends React.Component {
- render() {
- const content = [];
- this.props.attachments.forEach((attachment, i) => {
- content.push(
- <PostAttachment
- attachment={attachment}
- key={'att_' + i}
- />
- );
- });
+import React from 'react';
- return (
- <div className='attachment_list'>
- {content}
- </div>
+export default function PostAttachmentList(props) {
+ const content = [];
+ props.attachments.forEach((attachment, i) => {
+ content.push(
+ <PostAttachment
+ attachment={attachment}
+ key={'att_' + i}
+ />
);
- }
+ });
+
+ return (
+ <div className='attachment_list'>
+ {content}
+ </div>
+ );
}
PostAttachmentList.propTypes = {
- attachments: React.PropTypes.array.isRequired
+ attachments: PropTypes.array.isRequired
};
diff --git a/webapp/components/post_view/components/post_attachment_opengraph.jsx b/webapp/components/post_view/components/post_attachment_opengraph.jsx
index f6e66a641..129111800 100644
--- a/webapp/components/post_view/components/post_attachment_opengraph.jsx
+++ b/webapp/components/post_view/components/post_attachment_opengraph.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -279,7 +281,7 @@ PostAttachmentOpenGraph.defaultProps = {
};
PostAttachmentOpenGraph.propTypes = {
- link: React.PropTypes.string.isRequired,
- childComponentDidUpdateFunction: React.PropTypes.func,
- previewCollapsed: React.PropTypes.string
+ link: PropTypes.string.isRequired,
+ childComponentDidUpdateFunction: PropTypes.func,
+ previewCollapsed: PropTypes.string
};
diff --git a/webapp/components/post_view/components/post_body.jsx b/webapp/components/post_view/components/post_body.jsx
index 2ad9f96d1..0f481ec02 100644
--- a/webapp/components/post_view/components/post_body.jsx
+++ b/webapp/components/post_view/components/post_body.jsx
@@ -17,6 +17,8 @@ import {FormattedMessage} from 'react-intl';
import loadingGif from 'images/load.gif';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PostBody extends React.Component {
@@ -208,14 +210,14 @@ export default class PostBody extends React.Component {
}
PostBody.propTypes = {
- post: React.PropTypes.object.isRequired,
- currentUser: React.PropTypes.object.isRequired,
- parentPost: React.PropTypes.object,
- retryPost: React.PropTypes.func,
- lastPostCount: React.PropTypes.number,
- handleCommentClick: React.PropTypes.func.isRequired,
- compactDisplay: React.PropTypes.bool,
- previewCollapsed: React.PropTypes.string,
- isCommentMention: React.PropTypes.bool,
- childComponentDidUpdateFunction: React.PropTypes.func
+ post: PropTypes.object.isRequired,
+ currentUser: PropTypes.object.isRequired,
+ parentPost: PropTypes.object,
+ retryPost: PropTypes.func,
+ lastPostCount: PropTypes.number,
+ handleCommentClick: PropTypes.func.isRequired,
+ compactDisplay: PropTypes.bool,
+ previewCollapsed: PropTypes.string,
+ isCommentMention: PropTypes.bool,
+ childComponentDidUpdateFunction: PropTypes.func
};
diff --git a/webapp/components/post_view/components/post_body_additional_content.jsx b/webapp/components/post_view/components/post_body_additional_content.jsx
index 549bb9faa..130031233 100644
--- a/webapp/components/post_view/components/post_body_additional_content.jsx
+++ b/webapp/components/post_view/components/post_body_additional_content.jsx
@@ -9,6 +9,8 @@ import YoutubeVideo from 'components/youtube_video.jsx';
import Constants from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PostBodyAdditionalContent extends React.Component {
@@ -216,9 +218,9 @@ PostBodyAdditionalContent.defaultProps = {
previewCollapsed: 'false'
};
PostBodyAdditionalContent.propTypes = {
- post: React.PropTypes.object.isRequired,
- message: React.PropTypes.element.isRequired,
- compactDisplay: React.PropTypes.bool,
- previewCollapsed: React.PropTypes.string,
- childComponentDidUpdateFunction: React.PropTypes.func
+ post: PropTypes.object.isRequired,
+ message: PropTypes.element.isRequired,
+ compactDisplay: PropTypes.bool,
+ previewCollapsed: PropTypes.string,
+ childComponentDidUpdateFunction: PropTypes.func
};
diff --git a/webapp/components/post_view/components/post_header.jsx b/webapp/components/post_view/components/post_header.jsx
index eccd092b5..ce67cd653 100644
--- a/webapp/components/post_view/components/post_header.jsx
+++ b/webapp/components/post_view/components/post_header.jsx
@@ -9,6 +9,8 @@ import * as PostUtils from 'utils/post_utils.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PostHeader extends React.Component {
@@ -103,19 +105,19 @@ PostHeader.defaultProps = {
sameUser: false
};
PostHeader.propTypes = {
- post: React.PropTypes.object.isRequired,
- user: React.PropTypes.object,
- currentUser: React.PropTypes.object.isRequired,
- lastPostCount: React.PropTypes.number,
- commentCount: React.PropTypes.number.isRequired,
- isLastComment: React.PropTypes.bool.isRequired,
- handleCommentClick: React.PropTypes.func.isRequired,
- handleDropdownOpened: React.PropTypes.func.isRequired,
- sameUser: React.PropTypes.bool.isRequired,
- compactDisplay: React.PropTypes.bool,
- displayNameType: React.PropTypes.string,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- isFlagged: React.PropTypes.bool.isRequired,
- status: React.PropTypes.string,
- isBusy: React.PropTypes.bool
+ post: PropTypes.object.isRequired,
+ user: PropTypes.object,
+ currentUser: PropTypes.object.isRequired,
+ lastPostCount: PropTypes.number,
+ commentCount: PropTypes.number.isRequired,
+ isLastComment: PropTypes.bool.isRequired,
+ handleCommentClick: PropTypes.func.isRequired,
+ handleDropdownOpened: PropTypes.func.isRequired,
+ sameUser: PropTypes.bool.isRequired,
+ compactDisplay: PropTypes.bool,
+ displayNameType: PropTypes.string,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ isFlagged: PropTypes.bool.isRequired,
+ status: PropTypes.string,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/post_view/components/post_image.jsx b/webapp/components/post_view/components/post_image.jsx
index 39308ed2f..2bdc5efc0 100644
--- a/webapp/components/post_view/components/post_image.jsx
+++ b/webapp/components/post_view/components/post_image.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -82,6 +84,6 @@ export default class PostImageEmbed extends React.Component {
}
PostImageEmbed.propTypes = {
- link: React.PropTypes.string.isRequired,
- onLinkLoadError: React.PropTypes.func
+ link: PropTypes.string.isRequired,
+ onLinkLoadError: PropTypes.func
};
diff --git a/webapp/components/post_view/components/post_info.jsx b/webapp/components/post_view/components/post_info.jsx
index 3833f5058..06e7b33fd 100644
--- a/webapp/components/post_view/components/post_info.jsx
+++ b/webapp/components/post_view/components/post_info.jsx
@@ -18,6 +18,8 @@ import DelayedAction from 'utils/delayed_action.jsx';
import {Overlay} from 'react-bootstrap';
import EmojiPicker from 'components/emoji_picker/emoji_picker.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -454,15 +456,15 @@ PostInfo.defaultProps = {
sameUser: false
};
PostInfo.propTypes = {
- post: React.PropTypes.object.isRequired,
- lastPostCount: React.PropTypes.number,
- commentCount: React.PropTypes.number.isRequired,
- isLastComment: React.PropTypes.bool.isRequired,
- handleCommentClick: React.PropTypes.func.isRequired,
- handleDropdownOpened: React.PropTypes.func.isRequired,
- sameUser: React.PropTypes.bool.isRequired,
- currentUser: React.PropTypes.object.isRequired,
- compactDisplay: React.PropTypes.bool,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- isFlagged: React.PropTypes.bool
+ post: PropTypes.object.isRequired,
+ lastPostCount: PropTypes.number,
+ commentCount: PropTypes.number.isRequired,
+ isLastComment: PropTypes.bool.isRequired,
+ handleCommentClick: PropTypes.func.isRequired,
+ handleDropdownOpened: PropTypes.func.isRequired,
+ sameUser: PropTypes.bool.isRequired,
+ currentUser: PropTypes.object.isRequired,
+ compactDisplay: PropTypes.bool,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ isFlagged: PropTypes.bool
};
diff --git a/webapp/components/post_view/components/post_list.jsx b/webapp/components/post_view/components/post_list.jsx
index f233884ac..0d1244c55 100644
--- a/webapp/components/post_view/components/post_list.jsx
+++ b/webapp/components/post_view/components/post_list.jsx
@@ -25,6 +25,8 @@ import PreferenceStore from 'stores/preference_store.jsx';
import {FormattedDate, FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import ReactDOM from 'react-dom';
@@ -637,26 +639,26 @@ PostList.defaultProps = {
};
PostList.propTypes = {
- postList: React.PropTypes.object,
- profiles: React.PropTypes.object,
- channel: React.PropTypes.object,
- currentUser: React.PropTypes.object,
- scrollPostId: React.PropTypes.string,
- scrollType: React.PropTypes.number,
- postListScrolled: React.PropTypes.func.isRequired,
- showMoreMessagesTop: React.PropTypes.bool,
- showMoreMessagesBottom: React.PropTypes.bool,
- lastViewed: React.PropTypes.number,
- lastViewedBottom: React.PropTypes.number,
- ownNewMessage: React.PropTypes.bool,
- postsToHighlight: React.PropTypes.object,
- displayNameType: React.PropTypes.string,
- displayPostsInCenter: React.PropTypes.bool,
- compactDisplay: React.PropTypes.bool,
- previewsCollapsed: React.PropTypes.string,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- isFocusPost: React.PropTypes.bool,
- flaggedPosts: React.PropTypes.object,
- statuses: React.PropTypes.object,
- isBusy: React.PropTypes.bool
+ postList: PropTypes.object,
+ profiles: PropTypes.object,
+ channel: PropTypes.object,
+ currentUser: PropTypes.object,
+ scrollPostId: PropTypes.string,
+ scrollType: PropTypes.number,
+ postListScrolled: PropTypes.func.isRequired,
+ showMoreMessagesTop: PropTypes.bool,
+ showMoreMessagesBottom: PropTypes.bool,
+ lastViewed: PropTypes.number,
+ lastViewedBottom: PropTypes.number,
+ ownNewMessage: PropTypes.bool,
+ postsToHighlight: PropTypes.object,
+ displayNameType: PropTypes.string,
+ displayPostsInCenter: PropTypes.bool,
+ compactDisplay: PropTypes.bool,
+ previewsCollapsed: PropTypes.string,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ isFocusPost: PropTypes.bool,
+ flaggedPosts: PropTypes.object,
+ statuses: PropTypes.object,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/post_view/components/post_message_container.jsx b/webapp/components/post_view/components/post_message_container.jsx
index 4cb3cb76c..91ca03828 100644
--- a/webapp/components/post_view/components/post_message_container.jsx
+++ b/webapp/components/post_view/components/post_message_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -14,9 +16,9 @@ import PostMessageView from './post_message_view.jsx';
export default class PostMessageContainer extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired,
- options: React.PropTypes.object,
- lastPostCount: React.PropTypes.number
+ post: PropTypes.object.isRequired,
+ options: PropTypes.object,
+ lastPostCount: PropTypes.number
};
static defaultProps = {
diff --git a/webapp/components/post_view/components/post_message_view.jsx b/webapp/components/post_view/components/post_message_view.jsx
index d6610f813..938b5a8db 100644
--- a/webapp/components/post_view/components/post_message_view.jsx
+++ b/webapp/components/post_view/components/post_message_view.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -14,15 +16,15 @@ import {renderSystemMessage} from './system_message_helpers.jsx';
export default class PostMessageView extends React.Component {
static propTypes = {
- options: React.PropTypes.object.isRequired,
- post: React.PropTypes.object.isRequired,
- emojis: React.PropTypes.object.isRequired,
- enableFormatting: React.PropTypes.bool.isRequired,
- mentionKeys: React.PropTypes.arrayOf(React.PropTypes.string).isRequired,
- usernameMap: React.PropTypes.object.isRequired,
- channelNamesMap: React.PropTypes.object.isRequired,
- team: React.PropTypes.object.isRequired,
- lastPostCount: React.PropTypes.number
+ options: PropTypes.object.isRequired,
+ post: PropTypes.object.isRequired,
+ emojis: PropTypes.object.isRequired,
+ enableFormatting: PropTypes.bool.isRequired,
+ mentionKeys: PropTypes.arrayOf(PropTypes.string).isRequired,
+ usernameMap: PropTypes.object.isRequired,
+ channelNamesMap: PropTypes.object.isRequired,
+ team: PropTypes.object.isRequired,
+ lastPostCount: PropTypes.number
};
shouldComponentUpdate(nextProps) {
diff --git a/webapp/components/post_view/components/post_time.jsx b/webapp/components/post_view/components/post_time.jsx
index e9c92b1f2..9f6ef51cc 100644
--- a/webapp/components/post_view/components/post_time.jsx
+++ b/webapp/components/post_view/components/post_time.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -74,9 +76,9 @@ PostTime.defaultProps = {
};
PostTime.propTypes = {
- eventTime: React.PropTypes.number.isRequired,
- sameUser: React.PropTypes.bool,
- compactDisplay: React.PropTypes.bool,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- postId: React.PropTypes.string
+ eventTime: PropTypes.number.isRequired,
+ sameUser: PropTypes.bool,
+ compactDisplay: PropTypes.bool,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ postId: PropTypes.string
};
diff --git a/webapp/components/post_view/components/reaction.jsx b/webapp/components/post_view/components/reaction.jsx
index 0950b661b..d79e9e092 100644
--- a/webapp/components/post_view/components/reaction.jsx
+++ b/webapp/components/post_view/components/reaction.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -11,17 +13,17 @@ import * as Utils from 'utils/utils.jsx';
export default class Reaction extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired,
- currentUserId: React.PropTypes.string.isRequired,
- emojiName: React.PropTypes.string.isRequired,
- reactions: React.PropTypes.arrayOf(React.PropTypes.object),
- emojis: React.PropTypes.object.isRequired,
- profiles: React.PropTypes.array.isRequired,
- otherUsers: React.PropTypes.number.isRequired,
- actions: React.PropTypes.shape({
- addReaction: React.PropTypes.func.isRequired,
- getMissingProfiles: React.PropTypes.func.isRequired,
- removeReaction: React.PropTypes.func.isRequired
+ post: PropTypes.object.isRequired,
+ currentUserId: PropTypes.string.isRequired,
+ emojiName: PropTypes.string.isRequired,
+ reactions: PropTypes.arrayOf(PropTypes.object),
+ emojis: PropTypes.object.isRequired,
+ profiles: PropTypes.array.isRequired,
+ otherUsers: PropTypes.number.isRequired,
+ actions: PropTypes.shape({
+ addReaction: PropTypes.func.isRequired,
+ getMissingProfiles: PropTypes.func.isRequired,
+ removeReaction: PropTypes.func.isRequired
})
}
diff --git a/webapp/components/post_view/components/reaction_container.jsx b/webapp/components/post_view/components/reaction_container.jsx
index e95325770..29936c60a 100644
--- a/webapp/components/post_view/components/reaction_container.jsx
+++ b/webapp/components/post_view/components/reaction_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -12,10 +14,10 @@ import Reaction from './reaction.jsx';
export default class ReactionContainer extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired,
- emojiName: React.PropTypes.string.isRequired,
- reactions: React.PropTypes.arrayOf(React.PropTypes.object),
- emojis: React.PropTypes.object.isRequired
+ post: PropTypes.object.isRequired,
+ emojiName: PropTypes.string.isRequired,
+ reactions: PropTypes.arrayOf(PropTypes.object),
+ emojis: PropTypes.object.isRequired
}
constructor(props) {
diff --git a/webapp/components/post_view/components/reaction_list_container.jsx b/webapp/components/post_view/components/reaction_list_container.jsx
index b688afd94..fbc5f683c 100644
--- a/webapp/components/post_view/components/reaction_list_container.jsx
+++ b/webapp/components/post_view/components/reaction_list_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -11,7 +13,7 @@ import ReactionListView from './reaction_list_view.jsx';
export default class ReactionListContainer extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired
+ post: PropTypes.object.isRequired
}
constructor(props) {
diff --git a/webapp/components/post_view/components/reaction_list_view.jsx b/webapp/components/post_view/components/reaction_list_view.jsx
index ee814883f..4379453a3 100644
--- a/webapp/components/post_view/components/reaction_list_view.jsx
+++ b/webapp/components/post_view/components/reaction_list_view.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,9 +9,9 @@ import Reaction from './reaction_container.jsx';
export default class ReactionListView extends React.Component {
static propTypes = {
- post: React.PropTypes.object.isRequired,
- reactions: React.PropTypes.arrayOf(React.PropTypes.object),
- emojis: React.PropTypes.object.isRequired
+ post: PropTypes.object.isRequired,
+ reactions: PropTypes.arrayOf(PropTypes.object),
+ emojis: PropTypes.object.isRequired
}
render() {
diff --git a/webapp/components/post_view/components/scroll_to_bottom_arrows.jsx b/webapp/components/post_view/components/scroll_to_bottom_arrows.jsx
index d8d55f4be..73f8e6527 100644
--- a/webapp/components/post_view/components/scroll_to_bottom_arrows.jsx
+++ b/webapp/components/post_view/components/scroll_to_bottom_arrows.jsx
@@ -5,33 +5,33 @@ import $ from 'jquery';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
-export default class ScrollToBottomArrows extends React.Component {
- render() {
- // only show on mobile
- if ($(window).width() > 768) {
- return <noscript/>;
- }
-
- let className = 'post-list__arrows';
- if (this.props.isScrolling && !this.props.atBottom) {
- className += ' scrolling';
- }
-
- return (
- <div
- className={className}
- onClick={this.props.onClick}
- >
- <span dangerouslySetInnerHTML={{__html: Constants.SCROLL_BOTTOM_ICON}}/>
- </div>
- );
+export default function ScrollToBottomArrows(props) {
+ // only show on mobile
+ if ($(window).width() > 768) {
+ return <noscript/>;
+ }
+
+ let className = 'post-list__arrows';
+ if (props.isScrolling && !props.atBottom) {
+ className += ' scrolling';
}
+
+ return (
+ <div
+ className={className}
+ onClick={props.onClick}
+ >
+ <span dangerouslySetInnerHTML={{__html: Constants.SCROLL_BOTTOM_ICON}}/>
+ </div>
+ );
}
ScrollToBottomArrows.propTypes = {
- isScrolling: React.PropTypes.bool.isRequired,
- atBottom: React.PropTypes.bool.isRequired,
- onClick: React.PropTypes.func.isRequired
+ isScrolling: PropTypes.bool.isRequired,
+ atBottom: PropTypes.bool.isRequired,
+ onClick: PropTypes.func.isRequired
};
diff --git a/webapp/components/post_view/post_view_cache.jsx b/webapp/components/post_view/post_view_cache.jsx
index beb20360a..b8ae39e4a 100644
--- a/webapp/components/post_view/post_view_cache.jsx
+++ b/webapp/components/post_view/post_view_cache.jsx
@@ -6,14 +6,16 @@ import PostViewController from './post_view_controller.jsx';
import ChannelStore from 'stores/channel_store.jsx';
import UserStore from 'stores/user_store.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
const MAXIMUM_CACHED_VIEWS = 5;
export default class PostViewCache extends React.Component {
static propTypes = {
- actions: React.PropTypes.shape({
- viewChannel: React.PropTypes.func.isRequired
+ actions: PropTypes.shape({
+ viewChannel: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/post_view/post_view_controller.jsx b/webapp/components/post_view/post_view_controller.jsx
index 18ce61de3..2d4afb7d7 100644
--- a/webapp/components/post_view/post_view_controller.jsx
+++ b/webapp/components/post_view/post_view_controller.jsx
@@ -17,6 +17,8 @@ import Constants from 'utils/constants.jsx';
const Preferences = Constants.Preferences;
const ScrollTypes = Constants.ScrollTypes;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PostViewController extends React.Component {
@@ -396,6 +398,6 @@ export default class PostViewController extends React.Component {
}
PostViewController.propTypes = {
- channel: React.PropTypes.object,
- active: React.PropTypes.bool
+ channel: PropTypes.object,
+ active: PropTypes.bool
};
diff --git a/webapp/components/profile_picture.jsx b/webapp/components/profile_picture.jsx
index b7ee08785..ef1435491 100644
--- a/webapp/components/profile_picture.jsx
+++ b/webapp/components/profile_picture.jsx
@@ -3,6 +3,8 @@
import ProfilePopover from './profile_popover.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import StatusIcon from './status_icon.jsx';
import {OverlayTrigger} from 'react-bootstrap';
@@ -94,10 +96,10 @@ ProfilePicture.defaultProps = {
height: '36'
};
ProfilePicture.propTypes = {
- src: React.PropTypes.string.isRequired,
- status: React.PropTypes.string,
- width: React.PropTypes.string,
- height: React.PropTypes.string,
- user: React.PropTypes.object,
- isBusy: React.PropTypes.bool
+ src: PropTypes.string.isRequired,
+ status: PropTypes.string,
+ width: PropTypes.string,
+ height: PropTypes.string,
+ user: PropTypes.object,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/profile_popover.jsx b/webapp/components/profile_popover.jsx
index 63bd99ac4..3c57f41b6 100644
--- a/webapp/components/profile_popover.jsx
+++ b/webapp/components/profile_popover.jsx
@@ -15,6 +15,7 @@ const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
import {Popover, OverlayTrigger, Tooltip} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
import {browserHistory} from 'react-router/es6';
+import PropTypes from 'prop-types';
import React from 'react';
export default class ProfilePopover extends React.Component {
@@ -259,10 +260,10 @@ export default class ProfilePopover extends React.Component {
}
ProfilePopover.propTypes = Object.assign({
- src: React.PropTypes.string.isRequired,
- user: React.PropTypes.object.isRequired,
- status: React.PropTypes.string,
- isBusy: React.PropTypes.bool,
- hide: React.PropTypes.func
+ src: PropTypes.string.isRequired,
+ user: PropTypes.object.isRequired,
+ status: PropTypes.string,
+ isBusy: PropTypes.bool,
+ hide: PropTypes.func
}, Popover.propTypes);
delete ProfilePopover.propTypes.id;
diff --git a/webapp/components/rename_channel_modal.jsx b/webapp/components/rename_channel_modal.jsx
index 96897eb52..850231aeb 100644
--- a/webapp/components/rename_channel_modal.jsx
+++ b/webapp/components/rename_channel_modal.jsx
@@ -45,6 +45,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
export class RenameChannelModal extends React.Component {
@@ -322,9 +324,9 @@ export class RenameChannelModal extends React.Component {
RenameChannelModal.propTypes = {
intl: intlShape.isRequired,
- show: React.PropTypes.bool.isRequired,
- onHide: React.PropTypes.func.isRequired,
- channel: React.PropTypes.object.isRequired
+ show: PropTypes.bool.isRequired,
+ onHide: PropTypes.func.isRequired,
+ channel: PropTypes.object.isRequired
};
export default injectIntl(RenameChannelModal);
diff --git a/webapp/components/rhs_comment.jsx b/webapp/components/rhs_comment.jsx
index 88e8c1ca6..42c39e590 100644
--- a/webapp/components/rhs_comment.jsx
+++ b/webapp/components/rhs_comment.jsx
@@ -29,6 +29,8 @@ import ReactDOM from 'react-dom';
import loadingGif from 'images/load.gif';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router/es6';
@@ -645,13 +647,13 @@ export default class RhsComment extends React.Component {
}
RhsComment.propTypes = {
- post: React.PropTypes.object,
- lastPostCount: React.PropTypes.number,
- user: React.PropTypes.object.isRequired,
- currentUser: React.PropTypes.object.isRequired,
- compactDisplay: React.PropTypes.bool,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- isFlagged: React.PropTypes.bool,
- status: React.PropTypes.string,
- isBusy: React.PropTypes.bool
+ post: PropTypes.object,
+ lastPostCount: PropTypes.number,
+ user: PropTypes.object.isRequired,
+ currentUser: PropTypes.object.isRequired,
+ compactDisplay: PropTypes.bool,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ isFlagged: PropTypes.bool,
+ status: PropTypes.string,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/rhs_dropdown.jsx b/webapp/components/rhs_dropdown.jsx
index c6a10fa9e..e88d2a2bd 100644
--- a/webapp/components/rhs_dropdown.jsx
+++ b/webapp/components/rhs_dropdown.jsx
@@ -1,7 +1,9 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
import {Dropdown} from 'react-bootstrap';
import RhsDropdownButton from 'components/rhs_dropdown_button.jsx';
diff --git a/webapp/components/rhs_dropdown_button.jsx b/webapp/components/rhs_dropdown_button.jsx
index 3c325a431..ac7563994 100644
--- a/webapp/components/rhs_dropdown_button.jsx
+++ b/webapp/components/rhs_dropdown_button.jsx
@@ -1,7 +1,9 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import React, {PropTypes, PureComponent} from 'react';
+import React, {PureComponent} from 'react';
export default class RhsDropdownButton extends PureComponent {
static propTypes = {
diff --git a/webapp/components/rhs_header_post.jsx b/webapp/components/rhs_header_post.jsx
index 55c16b0ae..0e7ee786a 100644
--- a/webapp/components/rhs_header_post.jsx
+++ b/webapp/components/rhs_header_post.jsx
@@ -12,6 +12,8 @@ import {FormattedMessage} from 'react-intl';
const ActionTypes = Constants.ActionTypes;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class RhsHeaderPost extends React.Component {
@@ -201,11 +203,11 @@ RhsHeaderPost.defaultProps = {
fromSearch: ''
};
RhsHeaderPost.propTypes = {
- isMentionSearch: React.PropTypes.bool,
- isWebrtc: React.PropTypes.bool,
- fromSearch: React.PropTypes.string,
- fromFlaggedPosts: React.PropTypes.bool,
- fromPinnedPosts: React.PropTypes.bool,
- toggleSize: React.PropTypes.func,
- shrink: React.PropTypes.func
+ isMentionSearch: PropTypes.bool,
+ isWebrtc: PropTypes.bool,
+ fromSearch: PropTypes.string,
+ fromFlaggedPosts: PropTypes.bool,
+ fromPinnedPosts: PropTypes.bool,
+ toggleSize: PropTypes.func,
+ shrink: PropTypes.func
};
diff --git a/webapp/components/rhs_root_post.jsx b/webapp/components/rhs_root_post.jsx
index bf9748636..c79d1cabd 100644
--- a/webapp/components/rhs_root_post.jsx
+++ b/webapp/components/rhs_root_post.jsx
@@ -29,6 +29,8 @@ import {Overlay} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router/es6';
@@ -597,15 +599,15 @@ RhsRootPost.defaultProps = {
commentCount: 0
};
RhsRootPost.propTypes = {
- post: React.PropTypes.object.isRequired,
- lastPostCount: React.PropTypes.number,
- user: React.PropTypes.object.isRequired,
- currentUser: React.PropTypes.object.isRequired,
- commentCount: React.PropTypes.number,
- compactDisplay: React.PropTypes.bool,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- isFlagged: React.PropTypes.bool,
- status: React.PropTypes.string,
- previewCollapsed: React.PropTypes.string,
- isBusy: React.PropTypes.bool
+ post: PropTypes.object.isRequired,
+ lastPostCount: PropTypes.number,
+ user: PropTypes.object.isRequired,
+ currentUser: PropTypes.object.isRequired,
+ commentCount: PropTypes.number,
+ compactDisplay: PropTypes.bool,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ isFlagged: PropTypes.bool,
+ status: PropTypes.string,
+ previewCollapsed: PropTypes.string,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/rhs_thread.jsx b/webapp/components/rhs_thread.jsx
index 26afd76b1..bcb8a715f 100644
--- a/webapp/components/rhs_thread.jsx
+++ b/webapp/components/rhs_thread.jsx
@@ -20,6 +20,7 @@ import Constants from 'utils/constants.jsx';
const Preferences = Constants.Preferences;
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import Scrollbars from 'react-custom-scrollbars';
@@ -490,13 +491,13 @@ RhsThread.defaultProps = {
};
RhsThread.propTypes = {
- fromSearch: React.PropTypes.string,
- fromFlaggedPosts: React.PropTypes.bool,
- fromPinnedPosts: React.PropTypes.bool,
- isWebrtc: React.PropTypes.bool,
- isMentionSearch: React.PropTypes.bool,
- currentUser: React.PropTypes.object.isRequired,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- toggleSize: React.PropTypes.func,
- shrink: React.PropTypes.func
+ fromSearch: PropTypes.string,
+ fromFlaggedPosts: PropTypes.bool,
+ fromPinnedPosts: PropTypes.bool,
+ isWebrtc: PropTypes.bool,
+ isMentionSearch: PropTypes.bool,
+ currentUser: PropTypes.object.isRequired,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ toggleSize: PropTypes.func,
+ shrink: PropTypes.func
};
diff --git a/webapp/components/root.jsx b/webapp/components/root.jsx
index 701ee6e80..0332a8e0a 100644
--- a/webapp/components/root.jsx
+++ b/webapp/components/root.jsx
@@ -7,6 +7,8 @@ import Client from 'client/web_client.jsx';
import {IntlProvider} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import FastClick from 'fastclick';
import $ from 'jquery';
@@ -141,5 +143,5 @@ Root.defaultProps = {
};
Root.propTypes = {
- children: React.PropTypes.object
+ children: PropTypes.object
};
diff --git a/webapp/components/search_bar.jsx b/webapp/components/search_bar.jsx
index 1ed8445f8..7e2cecede 100644
--- a/webapp/components/search_bar.jsx
+++ b/webapp/components/search_bar.jsx
@@ -18,6 +18,8 @@ import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
var ActionTypes = Constants.ActionTypes;
import {Tooltip, OverlayTrigger, Popover} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SearchBar extends React.Component {
@@ -365,7 +367,7 @@ SearchBar.defaultProps = {
};
SearchBar.propTypes = {
- showMentionFlagBtns: React.PropTypes.bool,
- isCommentsPage: React.PropTypes.bool,
- isFocus: React.PropTypes.bool
+ showMentionFlagBtns: PropTypes.bool,
+ isCommentsPage: PropTypes.bool,
+ isFocus: PropTypes.bool
};
diff --git a/webapp/components/search_results.jsx b/webapp/components/search_results.jsx
index 64e5a7c93..6244fa85a 100644
--- a/webapp/components/search_results.jsx
+++ b/webapp/components/search_results.jsx
@@ -15,6 +15,7 @@ import Constants from 'utils/constants.jsx';
const Preferences = Constants.Preferences;
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
@@ -331,11 +332,11 @@ export default class SearchResults extends React.Component {
}
SearchResults.propTypes = {
- isMentionSearch: React.PropTypes.bool,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- toggleSize: React.PropTypes.func,
- shrink: React.PropTypes.func,
- isFlaggedPosts: React.PropTypes.bool,
- isPinnedPosts: React.PropTypes.bool,
- channelDisplayName: React.PropTypes.string.isRequired
+ isMentionSearch: PropTypes.bool,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ toggleSize: PropTypes.func,
+ shrink: PropTypes.func,
+ isFlaggedPosts: PropTypes.bool,
+ isPinnedPosts: PropTypes.bool,
+ channelDisplayName: PropTypes.string.isRequired
};
diff --git a/webapp/components/search_results_header.jsx b/webapp/components/search_results_header.jsx
index ca0a49012..fd2628013 100644
--- a/webapp/components/search_results_header.jsx
+++ b/webapp/components/search_results_header.jsx
@@ -7,6 +7,8 @@ import * as GlobalActions from 'actions/global_actions.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SearchResultsHeader extends React.Component {
@@ -138,10 +140,10 @@ export default class SearchResultsHeader extends React.Component {
}
SearchResultsHeader.propTypes = {
- isMentionSearch: React.PropTypes.bool,
- toggleSize: React.PropTypes.func,
- shrink: React.PropTypes.func,
- isFlaggedPosts: React.PropTypes.bool,
- isPinnedPosts: React.PropTypes.bool,
- channelDisplayName: React.PropTypes.string.isRequired
+ isMentionSearch: PropTypes.bool,
+ toggleSize: PropTypes.func,
+ shrink: PropTypes.func,
+ isFlaggedPosts: PropTypes.bool,
+ isPinnedPosts: PropTypes.bool,
+ channelDisplayName: PropTypes.string.isRequired
};
diff --git a/webapp/components/search_results_item.jsx b/webapp/components/search_results_item.jsx
index d3b7cfe00..9b5f3b07e 100644
--- a/webapp/components/search_results_item.jsx
+++ b/webapp/components/search_results_item.jsx
@@ -22,6 +22,8 @@ import * as PostUtils from 'utils/post_utils.jsx';
import Constants from 'utils/constants.jsx';
const ActionTypes = Constants.ActionTypes;
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage, FormattedDate} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
@@ -318,17 +320,17 @@ export default class SearchResultsItem extends React.Component {
}
SearchResultsItem.propTypes = {
- post: React.PropTypes.object,
- lastPostCount: React.PropTypes.number,
- user: React.PropTypes.object,
- channel: React.PropTypes.object,
- compactDisplay: React.PropTypes.bool,
- isMentionSearch: React.PropTypes.bool,
- isFlaggedSearch: React.PropTypes.bool,
- term: React.PropTypes.string,
- useMilitaryTime: React.PropTypes.bool.isRequired,
- shrink: React.PropTypes.func,
- isFlagged: React.PropTypes.bool,
- isBusy: React.PropTypes.bool,
- status: React.PropTypes.string
+ post: PropTypes.object,
+ lastPostCount: PropTypes.number,
+ user: PropTypes.object,
+ channel: PropTypes.object,
+ compactDisplay: PropTypes.bool,
+ isMentionSearch: PropTypes.bool,
+ isFlaggedSearch: PropTypes.bool,
+ term: PropTypes.string,
+ useMilitaryTime: PropTypes.bool.isRequired,
+ shrink: PropTypes.func,
+ isFlagged: PropTypes.bool,
+ isBusy: PropTypes.bool,
+ status: PropTypes.string
};
diff --git a/webapp/components/searchable_channel_list.jsx b/webapp/components/searchable_channel_list.jsx
index e8d1f92ba..075debcaa 100644
--- a/webapp/components/searchable_channel_list.jsx
+++ b/webapp/components/searchable_channel_list.jsx
@@ -6,6 +6,7 @@ import LoadingScreen from './loading_screen.jsx';
import * as UserAgent from 'utils/user_agent.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
import {localizeMessage} from 'utils/utils.jsx';
@@ -208,10 +209,10 @@ SearchableChannelList.defaultProps = {
};
SearchableChannelList.propTypes = {
- channels: React.PropTypes.arrayOf(React.PropTypes.object),
- channelsPerPage: React.PropTypes.number,
- nextPage: React.PropTypes.func.isRequired,
- search: React.PropTypes.func.isRequired,
- handleJoin: React.PropTypes.func.isRequired,
- noResultsText: React.PropTypes.object
+ channels: PropTypes.arrayOf(PropTypes.object),
+ channelsPerPage: PropTypes.number,
+ nextPage: PropTypes.func.isRequired,
+ search: PropTypes.func.isRequired,
+ handleJoin: PropTypes.func.isRequired,
+ noResultsText: PropTypes.object
};
diff --git a/webapp/components/searchable_user_list/searchable_user_list.jsx b/webapp/components/searchable_user_list/searchable_user_list.jsx
index 31db29d6b..dae7835ac 100644
--- a/webapp/components/searchable_user_list/searchable_user_list.jsx
+++ b/webapp/components/searchable_user_list/searchable_user_list.jsx
@@ -2,6 +2,7 @@
// See License.txt for license information.
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
@@ -14,23 +15,23 @@ const NEXT_BUTTON_TIMEOUT = 500;
export default class SearchableUserList extends React.Component {
static propTypes = {
- users: React.PropTypes.arrayOf(React.PropTypes.object),
- usersPerPage: React.PropTypes.number,
- total: React.PropTypes.number,
- extraInfo: React.PropTypes.object,
- nextPage: React.PropTypes.func.isRequired,
- previousPage: React.PropTypes.func.isRequired,
- search: React.PropTypes.func.isRequired,
- actions: React.PropTypes.arrayOf(React.PropTypes.func),
- actionProps: React.PropTypes.object,
- actionUserProps: React.PropTypes.object,
- focusOnMount: React.PropTypes.bool,
- renderCount: React.PropTypes.func,
- renderFilterRow: React.PropTypes.func,
-
- page: React.PropTypes.number.isRequired,
- term: React.PropTypes.string.isRequired,
- onTermChange: React.PropTypes.func.isRequired
+ users: PropTypes.arrayOf(PropTypes.object),
+ usersPerPage: PropTypes.number,
+ total: PropTypes.number,
+ extraInfo: PropTypes.object,
+ nextPage: PropTypes.func.isRequired,
+ previousPage: PropTypes.func.isRequired,
+ search: PropTypes.func.isRequired,
+ actions: PropTypes.arrayOf(PropTypes.func),
+ actionProps: PropTypes.object,
+ actionUserProps: PropTypes.object,
+ focusOnMount: PropTypes.bool,
+ renderCount: PropTypes.func,
+ renderFilterRow: PropTypes.func,
+
+ page: PropTypes.number.isRequired,
+ term: PropTypes.string.isRequired,
+ onTermChange: PropTypes.func.isRequired
};
static defaultProps = {
diff --git a/webapp/components/searchable_user_list/searchable_user_list_container.jsx b/webapp/components/searchable_user_list/searchable_user_list_container.jsx
index 9713572de..8c0694a0c 100644
--- a/webapp/components/searchable_user_list/searchable_user_list_container.jsx
+++ b/webapp/components/searchable_user_list/searchable_user_list_container.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,16 +9,16 @@ import SearchableUserList from './searchable_user_list.jsx';
export default class SearchableUserListContainer extends React.Component {
static propTypes = {
- users: React.PropTypes.arrayOf(React.PropTypes.object),
- usersPerPage: React.PropTypes.number,
- total: React.PropTypes.number,
- extraInfo: React.PropTypes.object,
- nextPage: React.PropTypes.func.isRequired,
- search: React.PropTypes.func.isRequired,
- actions: React.PropTypes.arrayOf(React.PropTypes.func),
- actionProps: React.PropTypes.object,
- actionUserProps: React.PropTypes.object,
- focusOnMount: React.PropTypes.bool
+ users: PropTypes.arrayOf(PropTypes.object),
+ usersPerPage: PropTypes.number,
+ total: PropTypes.number,
+ extraInfo: PropTypes.object,
+ nextPage: PropTypes.func.isRequired,
+ search: PropTypes.func.isRequired,
+ actions: PropTypes.arrayOf(PropTypes.func),
+ actionProps: PropTypes.object,
+ actionUserProps: PropTypes.object,
+ focusOnMount: PropTypes.bool
};
constructor(props) {
diff --git a/webapp/components/select_team/components/select_team_item.jsx b/webapp/components/select_team/components/select_team_item.jsx
index 202b11528..201c9c8ab 100644
--- a/webapp/components/select_team/components/select_team_item.jsx
+++ b/webapp/components/select_team/components/select_team_item.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -10,10 +12,10 @@ import * as Utils from 'utils/utils.jsx';
export default class SelectTeamItem extends React.Component {
static propTypes = {
- team: React.PropTypes.object.isRequired,
- url: React.PropTypes.string.isRequired,
- onTeamClick: React.PropTypes.func.isRequired,
- loading: React.PropTypes.bool.isRequired
+ team: PropTypes.object.isRequired,
+ url: PropTypes.string.isRequired,
+ onTeamClick: PropTypes.func.isRequired,
+ loading: PropTypes.bool.isRequired
};
constructor(props) {
diff --git a/webapp/components/select_team/select_team.jsx b/webapp/components/select_team/select_team.jsx
index e6179a2fd..858329bd0 100644
--- a/webapp/components/select_team/select_team.jsx
+++ b/webapp/components/select_team/select_team.jsx
@@ -14,13 +14,15 @@ import {Link} from 'react-router/es6';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import logoImage from 'images/logo.png';
export default class SelectTeam extends React.Component {
static propTypes = {
- actions: React.PropTypes.shape({
- getTeams: React.PropTypes.func.isRequired
+ actions: PropTypes.shape({
+ getTeams: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/setting_item_max.jsx b/webapp/components/setting_item_max.jsx
index e45ffd10c..8e3aaf12c 100644
--- a/webapp/components/setting_item_max.jsx
+++ b/webapp/components/setting_item_max.jsx
@@ -5,6 +5,8 @@ import {FormattedMessage} from 'react-intl';
import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SettingItemMax extends React.Component {
@@ -128,13 +130,13 @@ export default class SettingItemMax extends React.Component {
}
SettingItemMax.propTypes = {
- inputs: React.PropTypes.array,
- client_error: React.PropTypes.string,
- server_error: React.PropTypes.string,
- extraInfo: React.PropTypes.element,
- updateSection: React.PropTypes.func,
- submit: React.PropTypes.func,
- title: React.PropTypes.node,
- width: React.PropTypes.string,
- submitExtra: React.PropTypes.node
+ inputs: PropTypes.array,
+ client_error: PropTypes.string,
+ server_error: PropTypes.string,
+ extraInfo: PropTypes.element,
+ updateSection: PropTypes.func,
+ submit: PropTypes.func,
+ title: PropTypes.node,
+ width: PropTypes.string,
+ submitExtra: PropTypes.node
};
diff --git a/webapp/components/setting_item_min.jsx b/webapp/components/setting_item_min.jsx
index 3b3ae13c5..f230f0198 100644
--- a/webapp/components/setting_item_min.jsx
+++ b/webapp/components/setting_item_min.jsx
@@ -4,51 +4,51 @@
import {FormattedMessage} from 'react-intl';
import * as Utils from 'utils/utils.jsx';
-import React from 'react';
+import PropTypes from 'prop-types';
-export default class SettingItemMin extends React.Component {
- render() {
- let editButton = null;
- if (!this.props.disableOpen) {
- editButton = (
- <li className='col-xs-12 col-sm-3 section-edit'>
- <a
- id={Utils.createSafeId(this.props.title) + 'Edit'}
- className='theme'
- href='#'
- onClick={this.props.updateSection}
- >
- <i className='fa fa-pencil'/>
- <FormattedMessage
- id='setting_item_min.edit'
- defaultMessage='Edit'
- />
- </a>
- </li>
- );
- }
+import React from 'react';
- return (
- <ul
- className='section-min'
- onClick={this.props.updateSection}
- >
- <li className='col-xs-12 col-sm-9 section-title'>{this.props.title}</li>
- {editButton}
- <li
- id={Utils.createSafeId(this.props.title) + 'Desc'}
- className='col-xs-12 section-describe'
+export default function SettingItemMin(props) {
+ let editButton = null;
+ if (!props.disableOpen) {
+ editButton = (
+ <li className='col-xs-12 col-sm-3 section-edit'>
+ <a
+ id={Utils.createSafeId(props.title) + 'Edit'}
+ className='theme'
+ href='#'
+ onClick={props.updateSection}
>
- {this.props.describe}
- </li>
- </ul>
+ <i className='fa fa-pencil'/>
+ <FormattedMessage
+ id='setting_item_min.edit'
+ defaultMessage='Edit'
+ />
+ </a>
+ </li>
);
}
+
+ return (
+ <ul
+ className='section-min'
+ onClick={props.updateSection}
+ >
+ <li className='col-xs-12 col-sm-9 section-title'>{props.title}</li>
+ {editButton}
+ <li
+ id={Utils.createSafeId(props.title) + 'Desc'}
+ className='col-xs-12 section-describe'
+ >
+ {props.describe}
+ </li>
+ </ul>
+ );
}
SettingItemMin.propTypes = {
- title: React.PropTypes.node,
- disableOpen: React.PropTypes.bool,
- updateSection: React.PropTypes.func,
- describe: React.PropTypes.node
+ title: PropTypes.node,
+ disableOpen: PropTypes.bool,
+ updateSection: PropTypes.func,
+ describe: PropTypes.node
};
diff --git a/webapp/components/setting_picture.jsx b/webapp/components/setting_picture.jsx
index cc3ff8fbf..93d41a312 100644
--- a/webapp/components/setting_picture.jsx
+++ b/webapp/components/setting_picture.jsx
@@ -1,7 +1,9 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import React, {Component, PropTypes} from 'react';
+import React, {Component} from 'react';
import {FormattedMessage} from 'react-intl';
import FormError from 'components/form_error.jsx';
diff --git a/webapp/components/setting_upload.jsx b/webapp/components/setting_upload.jsx
index d6055ef08..3f2af309a 100644
--- a/webapp/components/setting_upload.jsx
+++ b/webapp/components/setting_upload.jsx
@@ -5,6 +5,8 @@ import $ from 'jquery';
import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SettingsUpload extends React.Component {
@@ -118,10 +120,10 @@ export default class SettingsUpload extends React.Component {
}
SettingsUpload.propTypes = {
- title: React.PropTypes.string.isRequired,
- submit: React.PropTypes.func.isRequired,
- fileTypesAccepted: React.PropTypes.string.isRequired,
- clientError: React.PropTypes.string,
- serverError: React.PropTypes.string,
- helpText: React.PropTypes.object
+ title: PropTypes.string.isRequired,
+ submit: PropTypes.func.isRequired,
+ fileTypesAccepted: PropTypes.string.isRequired,
+ clientError: PropTypes.string,
+ serverError: PropTypes.string,
+ helpText: PropTypes.object
};
diff --git a/webapp/components/settings_sidebar.jsx b/webapp/components/settings_sidebar.jsx
index dc98cdda3..cbd757356 100644
--- a/webapp/components/settings_sidebar.jsx
+++ b/webapp/components/settings_sidebar.jsx
@@ -4,6 +4,8 @@
import $ from 'jquery';
import * as UserAgent from 'utils/user_agent.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SettingsSidebar extends React.Component {
@@ -57,11 +59,11 @@ export default class SettingsSidebar extends React.Component {
}
SettingsSidebar.propTypes = {
- tabs: React.PropTypes.arrayOf(React.PropTypes.shape({
- name: React.PropTypes.string.isRequired,
- uiName: React.PropTypes.string.isRequired,
- icon: React.PropTypes.string.isRequired
+ tabs: PropTypes.arrayOf(PropTypes.shape({
+ name: PropTypes.string.isRequired,
+ uiName: PropTypes.string.isRequired,
+ icon: PropTypes.string.isRequired
})).isRequired,
- activeTab: React.PropTypes.string,
- updateTab: React.PropTypes.func.isRequired
+ activeTab: PropTypes.string,
+ updateTab: PropTypes.func.isRequired
};
diff --git a/webapp/components/should_verify_email.jsx b/webapp/components/should_verify_email.jsx
index 799f09c56..bbc677910 100644
--- a/webapp/components/should_verify_email.jsx
+++ b/webapp/components/should_verify_email.jsx
@@ -3,6 +3,8 @@
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router/es6';
@@ -111,5 +113,5 @@ export default class ShouldVerifyEmail extends React.Component {
ShouldVerifyEmail.defaultProps = {
};
ShouldVerifyEmail.propTypes = {
- location: React.PropTypes.object.isRequired
+ location: PropTypes.object.isRequired
};
diff --git a/webapp/components/sidebar_header.jsx b/webapp/components/sidebar_header.jsx
index 83ed6a5de..493864a6f 100644
--- a/webapp/components/sidebar_header.jsx
+++ b/webapp/components/sidebar_header.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -116,9 +118,9 @@ SidebarHeader.defaultProps = {
teamType: ''
};
SidebarHeader.propTypes = {
- teamDisplayName: React.PropTypes.string,
- teamDescription: React.PropTypes.string,
- teamName: React.PropTypes.string,
- teamType: React.PropTypes.string,
- currentUser: React.PropTypes.object
+ teamDisplayName: PropTypes.string,
+ teamDescription: PropTypes.string,
+ teamName: PropTypes.string,
+ teamType: PropTypes.string,
+ currentUser: PropTypes.object
};
diff --git a/webapp/components/sidebar_header_dropdown.jsx b/webapp/components/sidebar_header_dropdown.jsx
index fce0d35b8..3b5380b06 100644
--- a/webapp/components/sidebar_header_dropdown.jsx
+++ b/webapp/components/sidebar_header_dropdown.jsx
@@ -22,14 +22,16 @@ import {Dropdown} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
import {Link} from 'react-router/es6';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SidebarHeaderDropdown extends React.Component {
static propTypes = {
- teamType: React.PropTypes.string,
- teamDisplayName: React.PropTypes.string,
- teamName: React.PropTypes.string,
- currentUser: React.PropTypes.object
+ teamType: PropTypes.string,
+ teamDisplayName: PropTypes.string,
+ teamName: PropTypes.string,
+ currentUser: PropTypes.object
};
static defaultProps = {
diff --git a/webapp/components/sidebar_header_dropdown_button.jsx b/webapp/components/sidebar_header_dropdown_button.jsx
index f922af448..45e40f655 100644
--- a/webapp/components/sidebar_header_dropdown_button.jsx
+++ b/webapp/components/sidebar_header_dropdown_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -7,8 +9,8 @@ import Constants from 'utils/constants.jsx';
export default class SidebarHeaderDropdownButton extends React.PureComponent {
static propTypes = {
- bsRole: React.PropTypes.oneOf(['toggle']).isRequired, // eslint-disable-line react/no-unused-prop-types
- onClick: React.PropTypes.func.isRequired
+ bsRole: PropTypes.oneOf(['toggle']).isRequired, // eslint-disable-line react/no-unused-prop-types
+ onClick: PropTypes.func.isRequired
};
render() {
diff --git a/webapp/components/sidebar_right.jsx b/webapp/components/sidebar_right.jsx
index b4ca2f53c..3ceab3a18 100644
--- a/webapp/components/sidebar_right.jsx
+++ b/webapp/components/sidebar_right.jsx
@@ -19,7 +19,9 @@ import {trackEvent} from 'actions/diagnostics_actions.jsx';
import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
-import React, {PropTypes} from 'react';
+import PropTypes from 'prop-types';
+
+import React from 'react';
export default class SidebarRight extends React.Component {
constructor(props) {
diff --git a/webapp/components/sidebar_right_menu.jsx b/webapp/components/sidebar_right_menu.jsx
index aac7d58cc..10f6bd7a5 100644
--- a/webapp/components/sidebar_right_menu.jsx
+++ b/webapp/components/sidebar_right_menu.jsx
@@ -28,6 +28,8 @@ import {FormattedMessage} from 'react-intl';
import {Link} from 'react-router/es6';
import {createMenuTip} from 'components/tutorial/tutorial_tip.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SidebarRightMenu extends React.Component {
@@ -527,6 +529,6 @@ export default class SidebarRightMenu extends React.Component {
}
SidebarRightMenu.propTypes = {
- teamType: React.PropTypes.string,
- teamDisplayName: React.PropTypes.string
+ teamType: PropTypes.string,
+ teamDisplayName: PropTypes.string
};
diff --git a/webapp/components/signup/components/signup_email.jsx b/webapp/components/signup/components/signup_email.jsx
index 19e2ae656..6277fcce4 100644
--- a/webapp/components/signup/components/signup_email.jsx
+++ b/webapp/components/signup/components/signup_email.jsx
@@ -13,6 +13,8 @@ import {loadMe, loginById, createUserWithInvite} from 'actions/user_actions.jsx'
import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
@@ -22,7 +24,7 @@ import logoImage from 'images/logo.png';
export default class SignupEmail extends React.Component {
static get propTypes() {
return {
- location: React.PropTypes.object
+ location: PropTypes.object
};
}
diff --git a/webapp/components/signup/components/signup_ldap.jsx b/webapp/components/signup/components/signup_ldap.jsx
index a101c248f..8320bf089 100644
--- a/webapp/components/signup/components/signup_ldap.jsx
+++ b/webapp/components/signup/components/signup_ldap.jsx
@@ -10,6 +10,8 @@ import {trackEvent} from 'actions/diagnostics_actions.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
@@ -19,7 +21,7 @@ import logoImage from 'images/logo.png';
export default class SignupLdap extends React.Component {
static get propTypes() {
return {
- location: React.PropTypes.object
+ location: PropTypes.object
};
}
diff --git a/webapp/components/signup/signup_controller.jsx b/webapp/components/signup/signup_controller.jsx
index 9a6ed0ada..5a9e535a8 100644
--- a/webapp/components/signup/signup_controller.jsx
+++ b/webapp/components/signup/signup_controller.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -374,5 +376,5 @@ export default class SignupController extends React.Component {
}
SignupController.propTypes = {
- location: React.PropTypes.object
+ location: PropTypes.object
};
diff --git a/webapp/components/spinner_button.jsx b/webapp/components/spinner_button.jsx
index 8e946592f..78079b2b4 100644
--- a/webapp/components/spinner_button.jsx
+++ b/webapp/components/spinner_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -8,9 +10,9 @@ import loadingGif from 'images/load.gif';
export default class SpinnerButton extends React.Component {
static get propTypes() {
return {
- children: React.PropTypes.node,
- spinning: React.PropTypes.bool.isRequired,
- onClick: React.PropTypes.func
+ children: PropTypes.node,
+ spinning: PropTypes.bool.isRequired,
+ onClick: PropTypes.func
};
}
diff --git a/webapp/components/status_icon.jsx b/webapp/components/status_icon.jsx
index 07416e6fc..2a891d665 100644
--- a/webapp/components/status_icon.jsx
+++ b/webapp/components/status_icon.jsx
@@ -3,42 +3,41 @@
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
-export default class StatusIcon extends React.Component {
- render() {
- const status = this.props.status;
- const type = this.props.type;
+export default function StatusIcon(props) {
+ const status = props.status;
+ const type = props.type;
- if (!status) {
- return null;
- }
+ if (!status) {
+ return null;
+ }
- let statusIcon = '';
- if (type === 'avatar') {
- if (status === 'online') {
- statusIcon = Constants.ONLINE_AVATAR_SVG;
- } else if (status === 'away') {
- statusIcon = Constants.AWAY_AVATAR_SVG;
- } else {
- statusIcon = Constants.OFFLINE_AVATAR_SVG;
- }
- } else if (status === 'online') {
- statusIcon = Constants.ONLINE_ICON_SVG;
+ let statusIcon = '';
+ if (type === 'avatar') {
+ if (status === 'online') {
+ statusIcon = Constants.ONLINE_AVATAR_SVG;
} else if (status === 'away') {
- statusIcon = Constants.AWAY_ICON_SVG;
+ statusIcon = Constants.AWAY_AVATAR_SVG;
} else {
- statusIcon = Constants.OFFLINE_ICON_SVG;
+ statusIcon = Constants.OFFLINE_AVATAR_SVG;
}
-
- return (
- <span
- className={'status ' + this.props.className}
- dangerouslySetInnerHTML={{__html: statusIcon}}
- />
- );
+ } else if (status === 'online') {
+ statusIcon = Constants.ONLINE_ICON_SVG;
+ } else if (status === 'away') {
+ statusIcon = Constants.AWAY_ICON_SVG;
+ } else {
+ statusIcon = Constants.OFFLINE_ICON_SVG;
}
+ return (
+ <span
+ className={'status ' + props.className}
+ dangerouslySetInnerHTML={{__html: statusIcon}}
+ />
+ );
}
StatusIcon.defaultProps = {
@@ -46,7 +45,7 @@ StatusIcon.defaultProps = {
};
StatusIcon.propTypes = {
- status: React.PropTypes.string,
- className: React.PropTypes.string,
- type: React.PropTypes.string
+ status: PropTypes.string,
+ className: PropTypes.string,
+ type: PropTypes.string
};
diff --git a/webapp/components/suggestion/suggestion.jsx b/webapp/components/suggestion/suggestion.jsx
index 1ad816638..ddfdabc7d 100644
--- a/webapp/components/suggestion/suggestion.jsx
+++ b/webapp/components/suggestion/suggestion.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -6,11 +8,11 @@ import React from 'react';
export default class Suggestion extends React.Component {
static get propTypes() {
return {
- item: React.PropTypes.object.isRequired,
- term: React.PropTypes.string.isRequired,
- matchedPretext: React.PropTypes.string.isRequired,
- isSelection: React.PropTypes.bool,
- onClick: React.PropTypes.func
+ item: PropTypes.object.isRequired,
+ term: PropTypes.string.isRequired,
+ matchedPretext: PropTypes.string.isRequired,
+ isSelection: PropTypes.bool,
+ onClick: PropTypes.func
};
}
diff --git a/webapp/components/suggestion/suggestion_box.jsx b/webapp/components/suggestion/suggestion_box.jsx
index f048a03de..c70e8d5ae 100644
--- a/webapp/components/suggestion/suggestion_box.jsx
+++ b/webapp/components/suggestion/suggestion_box.jsx
@@ -10,6 +10,8 @@ import AutosizeTextarea from 'components/autosize_textarea.jsx';
const KeyCodes = Constants.KeyCodes;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SuggestionBox extends React.Component {
@@ -284,16 +286,16 @@ SuggestionBox.defaultProps = {
};
SuggestionBox.propTypes = {
- listComponent: React.PropTypes.func.isRequired,
- type: React.PropTypes.oneOf(['input', 'textarea', 'search']).isRequired,
- value: React.PropTypes.string.isRequired,
- providers: React.PropTypes.arrayOf(React.PropTypes.object),
- listStyle: React.PropTypes.string,
- renderDividers: React.PropTypes.bool,
+ listComponent: PropTypes.func.isRequired,
+ type: PropTypes.oneOf(['input', 'textarea', 'search']).isRequired,
+ value: PropTypes.string.isRequired,
+ providers: PropTypes.arrayOf(PropTypes.object),
+ listStyle: PropTypes.string,
+ renderDividers: PropTypes.bool,
// explicitly name any input event handlers we override and need to manually call
- onBlur: React.PropTypes.func,
- onChange: React.PropTypes.func,
- onKeyDown: React.PropTypes.func,
- onItemSelected: React.PropTypes.func
+ onBlur: PropTypes.func,
+ onChange: PropTypes.func,
+ onKeyDown: PropTypes.func,
+ onItemSelected: PropTypes.func
};
diff --git a/webapp/components/suggestion/suggestion_list.jsx b/webapp/components/suggestion/suggestion_list.jsx
index 959ed595a..bc2245077 100644
--- a/webapp/components/suggestion/suggestion_list.jsx
+++ b/webapp/components/suggestion/suggestion_list.jsx
@@ -7,13 +7,15 @@ import * as GlobalActions from 'actions/global_actions.jsx';
import SuggestionStore from 'stores/suggestion_store.jsx';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class SuggestionList extends React.Component {
static propTypes = {
- suggestionId: React.PropTypes.string.isRequired,
- location: React.PropTypes.string,
- renderDividers: React.PropTypes.bool
+ suggestionId: PropTypes.string.isRequired,
+ location: PropTypes.string,
+ renderDividers: PropTypes.bool
};
static defaultProps = {
diff --git a/webapp/components/team_general_tab.jsx b/webapp/components/team_general_tab.jsx
index 0a71546e8..4886ba4fa 100644
--- a/webapp/components/team_general_tab.jsx
+++ b/webapp/components/team_general_tab.jsx
@@ -11,6 +11,8 @@ import Constants from 'utils/constants.jsx';
import {FormattedMessage} from 'react-intl';
import {updateTeam} from 'actions/team_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
class GeneralTab extends React.Component {
@@ -592,9 +594,9 @@ class GeneralTab extends React.Component {
}
GeneralTab.propTypes = {
- updateSection: React.PropTypes.func.isRequired,
- team: React.PropTypes.object.isRequired,
- activeSection: React.PropTypes.string.isRequired
+ updateSection: PropTypes.func.isRequired,
+ team: PropTypes.object.isRequired,
+ activeSection: PropTypes.string.isRequired
};
export default GeneralTab;
diff --git a/webapp/components/team_members_dropdown/team_members_dropdown.jsx b/webapp/components/team_members_dropdown/team_members_dropdown.jsx
index f01997d12..0837fabd0 100644
--- a/webapp/components/team_members_dropdown/team_members_dropdown.jsx
+++ b/webapp/components/team_members_dropdown/team_members_dropdown.jsx
@@ -12,18 +12,20 @@ import {loadMyTeamMembers, updateActive} from 'actions/user_actions.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
import {browserHistory} from 'react-router/es6';
export default class TeamMembersDropdown extends React.Component {
static propTypes = {
- user: React.PropTypes.object.isRequired,
- teamMember: React.PropTypes.object.isRequired,
- actions: React.PropTypes.shape({
- getUser: React.PropTypes.func.isRequired,
- getTeamStats: React.PropTypes.func.isRequired,
- getChannelStats: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ teamMember: PropTypes.object.isRequired,
+ actions: PropTypes.shape({
+ getUser: PropTypes.func.isRequired,
+ getTeamStats: PropTypes.func.isRequired,
+ getChannelStats: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/team_members_modal.jsx b/webapp/components/team_members_modal.jsx
index a2b963e09..8307530c6 100644
--- a/webapp/components/team_members_modal.jsx
+++ b/webapp/components/team_members_modal.jsx
@@ -8,6 +8,8 @@ import {FormattedMessage} from 'react-intl';
import {Modal} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class TeamMembersModal extends React.Component {
@@ -77,7 +79,7 @@ export default class TeamMembersModal extends React.Component {
}
TeamMembersModal.propTypes = {
- onHide: React.PropTypes.func.isRequired,
- isAdmin: React.PropTypes.bool.isRequired,
- onLoad: React.PropTypes.func
+ onHide: PropTypes.func.isRequired,
+ isAdmin: PropTypes.bool.isRequired,
+ onLoad: PropTypes.func
};
diff --git a/webapp/components/team_settings.jsx b/webapp/components/team_settings.jsx
index 8edd5e0a6..7108ce771 100644
--- a/webapp/components/team_settings.jsx
+++ b/webapp/components/team_settings.jsx
@@ -6,6 +6,8 @@ import ImportTab from './team_import_tab.jsx';
import GeneralTab from './team_general_tab.jsx';
import * as Utils from 'utils/utils.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class TeamSettings extends React.Component {
@@ -73,7 +75,7 @@ TeamSettings.defaultProps = {
};
TeamSettings.propTypes = {
- activeTab: React.PropTypes.string.isRequired,
- activeSection: React.PropTypes.string.isRequired,
- updateSection: React.PropTypes.func.isRequired
+ activeTab: PropTypes.string.isRequired,
+ activeSection: PropTypes.string.isRequired,
+ updateSection: PropTypes.func.isRequired
};
diff --git a/webapp/components/team_sidebar/components/team_button.jsx b/webapp/components/team_sidebar/components/team_button.jsx
index 4be1b5c13..5a9b9dd59 100644
--- a/webapp/components/team_sidebar/components/team_button.jsx
+++ b/webapp/components/team_sidebar/components/team_button.jsx
@@ -6,6 +6,8 @@ import Constants from 'utils/constants.jsx';
import {trackEvent} from 'actions/diagnostics_actions.jsx';
import {switchTeams} from 'actions/team_actions.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {Link} from 'react-router/es6';
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
@@ -110,15 +112,15 @@ TeamButton.defaultProps = {
};
TeamButton.propTypes = {
- btnClass: React.PropTypes.string,
- url: React.PropTypes.string.isRequired,
- displayName: React.PropTypes.string,
- content: React.PropTypes.node,
- tip: React.PropTypes.node.isRequired,
- active: React.PropTypes.bool,
- disabled: React.PropTypes.bool,
- isMobile: React.PropTypes.bool,
- unread: React.PropTypes.bool,
- mentions: React.PropTypes.number,
- placement: React.PropTypes.oneOf(['left', 'right', 'top', 'bottom'])
+ btnClass: PropTypes.string,
+ url: PropTypes.string.isRequired,
+ displayName: PropTypes.string,
+ content: PropTypes.node,
+ tip: PropTypes.node.isRequired,
+ active: PropTypes.bool,
+ disabled: PropTypes.bool,
+ isMobile: PropTypes.bool,
+ unread: PropTypes.bool,
+ mentions: PropTypes.number,
+ placement: PropTypes.oneOf(['left', 'right', 'top', 'bottom'])
};
diff --git a/webapp/components/team_sidebar/team_sidebar_controller.jsx b/webapp/components/team_sidebar/team_sidebar_controller.jsx
index 316466c06..3cd30219f 100644
--- a/webapp/components/team_sidebar/team_sidebar_controller.jsx
+++ b/webapp/components/team_sidebar/team_sidebar_controller.jsx
@@ -10,13 +10,14 @@ import {sortTeamsByDisplayName} from 'utils/team_utils.jsx';
import * as Utils from 'utils/utils.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
export default class TeamSidebar extends React.Component {
static propTypes = {
- actions: React.PropTypes.shape({
- getTeams: React.PropTypes.func.isRequired
+ actions: PropTypes.shape({
+ getTeams: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/textbox.jsx b/webapp/components/textbox.jsx
index b183f0514..55980d331 100644
--- a/webapp/components/textbox.jsx
+++ b/webapp/components/textbox.jsx
@@ -18,23 +18,25 @@ import {FormattedMessage} from 'react-intl';
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class Textbox extends React.Component {
static propTypes = {
- id: React.PropTypes.string.isRequired,
- channelId: React.PropTypes.string,
- value: React.PropTypes.string.isRequired,
- onChange: React.PropTypes.func.isRequired,
- onKeyPress: React.PropTypes.func.isRequired,
- createMessage: React.PropTypes.string.isRequired,
- previewMessageLink: React.PropTypes.string,
- onKeyDown: React.PropTypes.func,
- onBlur: React.PropTypes.func,
- supportsCommands: React.PropTypes.bool.isRequired,
- handlePostError: React.PropTypes.func,
- suggestionListStyle: React.PropTypes.string,
- emojiEnabled: React.PropTypes.bool
+ id: PropTypes.string.isRequired,
+ channelId: PropTypes.string,
+ value: PropTypes.string.isRequired,
+ onChange: PropTypes.func.isRequired,
+ onKeyPress: PropTypes.func.isRequired,
+ createMessage: PropTypes.string.isRequired,
+ previewMessageLink: PropTypes.string,
+ onKeyDown: PropTypes.func,
+ onBlur: PropTypes.func,
+ supportsCommands: PropTypes.bool.isRequired,
+ handlePostError: PropTypes.func,
+ suggestionListStyle: PropTypes.string,
+ emojiEnabled: PropTypes.bool
};
static defaultProps = {
diff --git a/webapp/components/toggle_modal_button.jsx b/webapp/components/toggle_modal_button.jsx
index 7d4d0a364..1e72e13b7 100644
--- a/webapp/components/toggle_modal_button.jsx
+++ b/webapp/components/toggle_modal_button.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -69,10 +71,10 @@ export default class ModalToggleButton extends React.Component {
}
ModalToggleButton.propTypes = {
- children: React.PropTypes.node.isRequired,
- dialogType: React.PropTypes.func.isRequired,
- dialogProps: React.PropTypes.object,
- onClick: React.PropTypes.func
+ children: PropTypes.node.isRequired,
+ dialogType: PropTypes.func.isRequired,
+ dialogProps: PropTypes.object,
+ onClick: PropTypes.func
};
ModalToggleButton.defaultProps = {
diff --git a/webapp/components/tutorial/tutorial_intro_screens.jsx b/webapp/components/tutorial/tutorial_intro_screens.jsx
index 78203fec0..00f7db270 100644
--- a/webapp/components/tutorial/tutorial_intro_screens.jsx
+++ b/webapp/components/tutorial/tutorial_intro_screens.jsx
@@ -17,13 +17,15 @@ import AppIcons from 'images/appIcons.png';
const NUM_SCREENS = 3;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class TutorialIntroScreens extends React.Component {
static get propTypes() {
return {
- townSquare: React.PropTypes.object,
- offTopic: React.PropTypes.object
+ townSquare: PropTypes.object,
+ offTopic: PropTypes.object
};
}
constructor(props) {
diff --git a/webapp/components/tutorial/tutorial_tip.jsx b/webapp/components/tutorial/tutorial_tip.jsx
index f0e0d7673..ee1686007 100644
--- a/webapp/components/tutorial/tutorial_tip.jsx
+++ b/webapp/components/tutorial/tutorial_tip.jsx
@@ -15,6 +15,8 @@ import * as Utils from 'utils/utils.jsx';
import {Overlay} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
import tutorialGif from 'images/tutorialTip.gif';
@@ -199,10 +201,10 @@ TutorialTip.defaultProps = {
};
TutorialTip.propTypes = {
- screens: React.PropTypes.array.isRequired,
- placement: React.PropTypes.string.isRequired,
- overlayClass: React.PropTypes.string,
- diagnosticsTag: React.PropTypes.string
+ screens: PropTypes.array.isRequired,
+ placement: PropTypes.string.isRequired,
+ overlayClass: PropTypes.string,
+ diagnosticsTag: PropTypes.string
};
export function createMenuTip(toggleFunc, onBottom) {
diff --git a/webapp/components/unread_channel_indicator.jsx b/webapp/components/unread_channel_indicator.jsx
index 9d6b57d44..d1ffd4c0a 100644
--- a/webapp/components/unread_channel_indicator.jsx
+++ b/webapp/components/unread_channel_indicator.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -5,21 +7,19 @@
// because it is either above or below the screen
import React from 'react';
-export default class UnreadChannelIndicator extends React.Component {
- render() {
- let displayValue = 'none';
- if (this.props.show) {
- displayValue = 'block';
- }
- return (
- <div
- className={'nav-pills__unread-indicator ' + this.props.extraClass}
- style={{display: displayValue}}
- >
- {this.props.text}
- </div>
- );
+export default function UnreadChannelIndicator(props) {
+ let displayValue = 'none';
+ if (props.show) {
+ displayValue = 'block';
}
+ return (
+ <div
+ className={'nav-pills__unread-indicator ' + props.extraClass}
+ style={{display: displayValue}}
+ >
+ {props.text}
+ </div>
+ );
}
UnreadChannelIndicator.defaultProps = {
@@ -28,7 +28,7 @@ UnreadChannelIndicator.defaultProps = {
text: ''
};
UnreadChannelIndicator.propTypes = {
- show: React.PropTypes.bool,
- extraClass: React.PropTypes.string,
- text: React.PropTypes.object
+ show: PropTypes.bool,
+ extraClass: PropTypes.string,
+ text: PropTypes.object
};
diff --git a/webapp/components/user_list.jsx b/webapp/components/user_list.jsx
index ceb6f9780..0a187c36e 100644
--- a/webapp/components/user_list.jsx
+++ b/webapp/components/user_list.jsx
@@ -4,6 +4,8 @@
import UserListRow from './user_list_row.jsx';
import LoadingScreen from 'components/loading_screen.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -74,9 +76,9 @@ UserList.defaultProps = {
};
UserList.propTypes = {
- users: React.PropTypes.arrayOf(React.PropTypes.object),
- extraInfo: React.PropTypes.object,
- actions: React.PropTypes.arrayOf(React.PropTypes.func),
- actionProps: React.PropTypes.object,
- actionUserProps: React.PropTypes.object
+ users: PropTypes.arrayOf(PropTypes.object),
+ extraInfo: PropTypes.object,
+ actions: PropTypes.arrayOf(PropTypes.func),
+ actionProps: PropTypes.object,
+ actionUserProps: PropTypes.object
};
diff --git a/webapp/components/user_list_row.jsx b/webapp/components/user_list_row.jsx
index 1f5eacd48..1076752a9 100644
--- a/webapp/components/user_list_row.jsx
+++ b/webapp/components/user_list_row.jsx
@@ -10,6 +10,8 @@ import Constants from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
import Client from 'client/web_client.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedHTMLMessage} from 'react-intl';
@@ -110,10 +112,10 @@ UserListRow.defaultProps = {
};
UserListRow.propTypes = {
- user: React.PropTypes.object.isRequired,
- extraInfo: React.PropTypes.arrayOf(React.PropTypes.object),
- actions: React.PropTypes.arrayOf(React.PropTypes.func),
- actionProps: React.PropTypes.object,
- actionUserProps: React.PropTypes.object,
- userCount: React.PropTypes.number
+ user: PropTypes.object.isRequired,
+ extraInfo: PropTypes.arrayOf(PropTypes.object),
+ actions: PropTypes.arrayOf(PropTypes.func),
+ actionProps: PropTypes.object,
+ actionUserProps: PropTypes.object,
+ userCount: PropTypes.number
};
diff --git a/webapp/components/user_profile.jsx b/webapp/components/user_profile.jsx
index 37993094b..2326622ec 100644
--- a/webapp/components/user_profile.jsx
+++ b/webapp/components/user_profile.jsx
@@ -7,6 +7,8 @@ import Client from 'client/web_client.jsx';
import {OverlayTrigger} from 'react-bootstrap';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class UserProfile extends React.Component {
@@ -101,11 +103,11 @@ UserProfile.defaultProps = {
disablePopover: false
};
UserProfile.propTypes = {
- user: React.PropTypes.object,
- overwriteName: React.PropTypes.node,
- overwriteImage: React.PropTypes.string,
- disablePopover: React.PropTypes.bool,
- displayNameType: React.PropTypes.string,
- status: React.PropTypes.string,
- isBusy: React.PropTypes.bool
+ user: PropTypes.object,
+ overwriteName: PropTypes.node,
+ overwriteImage: PropTypes.string,
+ disablePopover: PropTypes.bool,
+ displayNameType: PropTypes.string,
+ status: PropTypes.string,
+ isBusy: PropTypes.bool
};
diff --git a/webapp/components/user_settings/custom_theme_chooser.jsx b/webapp/components/user_settings/custom_theme_chooser.jsx
index 307310f64..a4e5f8937 100644
--- a/webapp/components/user_settings/custom_theme_chooser.jsx
+++ b/webapp/components/user_settings/custom_theme_chooser.jsx
@@ -3,6 +3,7 @@
import 'bootstrap-colorpicker';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Popover, OverlayTrigger} from 'react-bootstrap';
import {defineMessages, FormattedMessage, intlShape, injectIntl} from 'react-intl';
@@ -444,8 +445,8 @@ class CustomThemeChooser extends React.Component {
CustomThemeChooser.propTypes = {
intl: intlShape.isRequired,
- theme: React.PropTypes.object.isRequired,
- updateTheme: React.PropTypes.func.isRequired
+ theme: PropTypes.object.isRequired,
+ updateTheme: PropTypes.func.isRequired
};
export default injectIntl(CustomThemeChooser);
diff --git a/webapp/components/user_settings/desktop_notification_settings.jsx b/webapp/components/user_settings/desktop_notification_settings.jsx
index d94c02007..79d500c88 100644
--- a/webapp/components/user_settings/desktop_notification_settings.jsx
+++ b/webapp/components/user_settings/desktop_notification_settings.jsx
@@ -7,6 +7,8 @@ import SettingItemMax from 'components/setting_item_max.jsx';
import * as Utils from 'utils/utils.jsx';
import * as UserAgent from 'utils/user_agent.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -451,13 +453,13 @@ export default class DesktopNotificationSettings extends React.Component {
}
DesktopNotificationSettings.propTypes = {
- activity: React.PropTypes.string.isRequired,
- sound: React.PropTypes.string.isRequired,
- duration: React.PropTypes.string.isRequired,
- updateSection: React.PropTypes.func,
- setParentState: React.PropTypes.func,
- submit: React.PropTypes.func,
- cancel: React.PropTypes.func,
- error: React.PropTypes.string,
- active: React.PropTypes.bool
+ activity: PropTypes.string.isRequired,
+ sound: PropTypes.string.isRequired,
+ duration: PropTypes.string.isRequired,
+ updateSection: PropTypes.func,
+ setParentState: PropTypes.func,
+ submit: PropTypes.func,
+ cancel: PropTypes.func,
+ error: PropTypes.string,
+ active: PropTypes.bool
};
diff --git a/webapp/components/user_settings/email_notification_setting.jsx b/webapp/components/user_settings/email_notification_setting.jsx
index 4620adcc4..d92a1d0a6 100644
--- a/webapp/components/user_settings/email_notification_setting.jsx
+++ b/webapp/components/user_settings/email_notification_setting.jsx
@@ -1,3 +1,5 @@
+import PropTypes from 'prop-types';
+
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
@@ -15,12 +17,12 @@ import {Preferences} from 'utils/constants.jsx';
export default class EmailNotificationSetting extends React.Component {
static propTypes = {
- activeSection: React.PropTypes.string.isRequired,
- updateSection: React.PropTypes.func.isRequired,
- enableEmail: React.PropTypes.bool.isRequired,
- onChange: React.PropTypes.func.isRequired,
- onSubmit: React.PropTypes.func.isRequired,
- serverError: React.PropTypes.string
+ activeSection: PropTypes.string.isRequired,
+ updateSection: PropTypes.func.isRequired,
+ enableEmail: PropTypes.bool.isRequired,
+ onChange: PropTypes.func.isRequired,
+ onSubmit: PropTypes.func.isRequired,
+ serverError: PropTypes.string
};
constructor(props) {
diff --git a/webapp/components/user_settings/manage_languages.jsx b/webapp/components/user_settings/manage_languages.jsx
index 09b32e1d7..2cb38068b 100644
--- a/webapp/components/user_settings/manage_languages.jsx
+++ b/webapp/components/user_settings/manage_languages.jsx
@@ -9,6 +9,7 @@ import Constants from 'utils/constants.jsx';
import {FormattedMessage, FormattedHTMLMessage} from 'react-intl';
import {updateUser} from 'actions/user_actions.jsx';
+import PropTypes from 'prop-types';
import React from 'react';
export default class ManageLanguage extends React.Component {
@@ -132,6 +133,6 @@ export default class ManageLanguage extends React.Component {
}
ManageLanguage.propTypes = {
- user: React.PropTypes.object.isRequired,
- updateSection: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ updateSection: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/premade_theme_chooser.jsx b/webapp/components/user_settings/premade_theme_chooser.jsx
index 4a0254d40..653628595 100644
--- a/webapp/components/user_settings/premade_theme_chooser.jsx
+++ b/webapp/components/user_settings/premade_theme_chooser.jsx
@@ -5,6 +5,8 @@ import $ from 'jquery';
import * as Utils from 'utils/utils.jsx';
import Constants from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class PremadeThemeChooser extends React.Component {
@@ -58,6 +60,6 @@ export default class PremadeThemeChooser extends React.Component {
}
PremadeThemeChooser.propTypes = {
- theme: React.PropTypes.object.isRequired,
- updateTheme: React.PropTypes.func.isRequired
+ theme: PropTypes.object.isRequired,
+ updateTheme: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/user_settings.jsx b/webapp/components/user_settings/user_settings.jsx
index b01274b32..4ad4153ce 100644
--- a/webapp/components/user_settings/user_settings.jsx
+++ b/webapp/components/user_settings/user_settings.jsx
@@ -9,6 +9,8 @@ import GeneralTab from './user_settings_general';
import DisplayTab from './user_settings_display.jsx';
import AdvancedTab from './user_settings_advanced.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class UserSettings extends React.Component {
@@ -111,12 +113,12 @@ export default class UserSettings extends React.Component {
}
UserSettings.propTypes = {
- activeTab: React.PropTypes.string,
- activeSection: React.PropTypes.string,
- updateSection: React.PropTypes.func,
- updateTab: React.PropTypes.func,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired,
- setEnforceFocus: React.PropTypes.func.isRequired,
- setRequireConfirm: React.PropTypes.func.isRequired
+ activeTab: PropTypes.string,
+ activeSection: PropTypes.string,
+ updateSection: PropTypes.func,
+ updateTab: PropTypes.func,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired,
+ setEnforceFocus: PropTypes.func.isRequired,
+ setRequireConfirm: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/user_settings_advanced.jsx b/webapp/components/user_settings/user_settings_advanced.jsx
index 329bdd50d..28beff556 100644
--- a/webapp/components/user_settings/user_settings_advanced.jsx
+++ b/webapp/components/user_settings/user_settings_advanced.jsx
@@ -14,6 +14,8 @@ import {FormattedMessage} from 'react-intl';
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class AdvancedSettingsDisplay extends React.Component {
@@ -586,10 +588,10 @@ export default class AdvancedSettingsDisplay extends React.Component {
}
AdvancedSettingsDisplay.propTypes = {
- user: React.PropTypes.object,
- updateSection: React.PropTypes.func,
- updateTab: React.PropTypes.func,
- activeSection: React.PropTypes.string,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired
+ user: PropTypes.object,
+ updateSection: PropTypes.func,
+ updateTab: PropTypes.func,
+ activeSection: PropTypes.string,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/user_settings_display.jsx b/webapp/components/user_settings/user_settings_display.jsx
index bf4d24b49..a5ca79c55 100644
--- a/webapp/components/user_settings/user_settings_display.jsx
+++ b/webapp/components/user_settings/user_settings_display.jsx
@@ -29,6 +29,8 @@ function getDisplayStateFromStores() {
};
}
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class UserSettingsDisplay extends React.Component {
@@ -902,12 +904,12 @@ export default class UserSettingsDisplay extends React.Component {
}
UserSettingsDisplay.propTypes = {
- user: React.PropTypes.object,
- updateSection: React.PropTypes.func,
- updateTab: React.PropTypes.func,
- activeSection: React.PropTypes.string,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired,
- setRequireConfirm: React.PropTypes.func.isRequired,
- setEnforceFocus: React.PropTypes.func.isRequired
+ user: PropTypes.object,
+ updateSection: PropTypes.func,
+ updateTab: PropTypes.func,
+ activeSection: PropTypes.string,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired,
+ setRequireConfirm: PropTypes.func.isRequired,
+ setEnforceFocus: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/user_settings_general/user_settings_general.jsx b/webapp/components/user_settings/user_settings_general/user_settings_general.jsx
index 5e9763f12..353a6d582 100644
--- a/webapp/components/user_settings/user_settings_general/user_settings_general.jsx
+++ b/webapp/components/user_settings/user_settings_general/user_settings_general.jsx
@@ -76,19 +76,21 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class UserSettingsGeneralTab extends React.Component {
static propTypes = {
intl: intlShape.isRequired,
- user: React.PropTypes.object.isRequired,
- updateSection: React.PropTypes.func.isRequired,
- updateTab: React.PropTypes.func.isRequired,
- activeSection: React.PropTypes.string.isRequired,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired,
- actions: React.PropTypes.shape({
- getMe: React.PropTypes.func.isRequired
+ user: PropTypes.object.isRequired,
+ updateSection: PropTypes.func.isRequired,
+ updateTab: PropTypes.func.isRequired,
+ activeSection: PropTypes.string.isRequired,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired,
+ actions: PropTypes.shape({
+ getMe: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/user_settings/user_settings_modal.jsx b/webapp/components/user_settings/user_settings_modal.jsx
index 1d43126bd..0074ffce8 100644
--- a/webapp/components/user_settings/user_settings_modal.jsx
+++ b/webapp/components/user_settings/user_settings_modal.jsx
@@ -49,6 +49,8 @@ const holders = defineMessages({
}
});
+import PropTypes from 'prop-types';
+
import React from 'react';
class UserSettingsModal extends React.Component {
@@ -279,8 +281,8 @@ class UserSettingsModal extends React.Component {
UserSettingsModal.propTypes = {
intl: intlShape.isRequired,
- show: React.PropTypes.bool.isRequired,
- onModalDismissed: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ onModalDismissed: PropTypes.func.isRequired
};
export default injectIntl(UserSettingsModal);
diff --git a/webapp/components/user_settings/user_settings_notifications.jsx b/webapp/components/user_settings/user_settings_notifications.jsx
index 0caffb512..b0b4855b2 100644
--- a/webapp/components/user_settings/user_settings_notifications.jsx
+++ b/webapp/components/user_settings/user_settings_notifications.jsx
@@ -97,6 +97,8 @@ function getNotificationsStateFromStores() {
};
}
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class NotificationsTab extends React.Component {
@@ -896,11 +898,11 @@ NotificationsTab.defaultProps = {
activeTab: ''
};
NotificationsTab.propTypes = {
- user: React.PropTypes.object,
- updateSection: React.PropTypes.func,
- updateTab: React.PropTypes.func,
- activeSection: React.PropTypes.string,
- activeTab: React.PropTypes.string,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired
+ user: PropTypes.object,
+ updateSection: PropTypes.func,
+ updateTab: PropTypes.func,
+ activeSection: PropTypes.string,
+ activeTab: PropTypes.string,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired
};
diff --git a/webapp/components/user_settings/user_settings_security/user_settings_security.jsx b/webapp/components/user_settings/user_settings_security/user_settings_security.jsx
index d4a372454..b8ec690a4 100644
--- a/webapp/components/user_settings/user_settings_security/user_settings_security.jsx
+++ b/webapp/components/user_settings/user_settings_security/user_settings_security.jsx
@@ -15,6 +15,7 @@ import Constants from 'utils/constants.jsx';
import {updatePassword, getAuthorizedApps, deactivateMfa, deauthorizeOAuthApp} from 'actions/user_actions.jsx';
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage, FormattedTime, FormattedDate} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
@@ -23,15 +24,15 @@ import icon50 from 'images/icon50x50.png';
export default class SecurityTab extends React.Component {
static propTypes = {
- user: React.PropTypes.object,
- activeSection: React.PropTypes.string,
- updateSection: React.PropTypes.func,
- updateTab: React.PropTypes.func,
- closeModal: React.PropTypes.func.isRequired,
- collapseModal: React.PropTypes.func.isRequired,
- setEnforceFocus: React.PropTypes.func.isRequired,
- actions: React.PropTypes.shape({
- getMe: React.PropTypes.func.isRequired
+ user: PropTypes.object,
+ activeSection: PropTypes.string,
+ updateSection: PropTypes.func,
+ updateTab: PropTypes.func,
+ closeModal: PropTypes.func.isRequired,
+ collapseModal: PropTypes.func.isRequired,
+ setEnforceFocus: PropTypes.func.isRequired,
+ actions: PropTypes.shape({
+ getMe: PropTypes.func.isRequired
}).isRequired
}
diff --git a/webapp/components/user_settings/user_settings_theme.jsx b/webapp/components/user_settings/user_settings_theme.jsx
index 88b03a0ff..5730fe171 100644
--- a/webapp/components/user_settings/user_settings_theme.jsx
+++ b/webapp/components/user_settings/user_settings_theme.jsx
@@ -21,6 +21,8 @@ import {FormattedMessage} from 'react-intl';
import {ActionTypes, Constants, Preferences} from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ThemeSetting extends React.Component {
@@ -353,8 +355,8 @@ export default class ThemeSetting extends React.Component {
}
ThemeSetting.propTypes = {
- selected: React.PropTypes.bool.isRequired,
- updateSection: React.PropTypes.func.isRequired,
- setRequireConfirm: React.PropTypes.func.isRequired,
- setEnforceFocus: React.PropTypes.func.isRequired
+ selected: PropTypes.bool.isRequired,
+ updateSection: PropTypes.func.isRequired,
+ setRequireConfirm: PropTypes.func.isRequired,
+ setEnforceFocus: PropTypes.func.isRequired
};
diff --git a/webapp/components/view_image.jsx b/webapp/components/view_image.jsx
index 580c9e7a4..b2cd41810 100644
--- a/webapp/components/view_image.jsx
+++ b/webapp/components/view_image.jsx
@@ -17,6 +17,7 @@ import Constants from 'utils/constants.jsx';
const KeyCodes = Constants.KeyCodes;
import $ from 'jquery';
+import PropTypes from 'prop-types';
import React from 'react';
import {Modal} from 'react-bootstrap';
@@ -310,10 +311,10 @@ ViewImageModal.defaultProps = {
startId: 0
};
ViewImageModal.propTypes = {
- show: React.PropTypes.bool.isRequired,
- onModalDismissed: React.PropTypes.func.isRequired,
- fileInfos: React.PropTypes.arrayOf(React.PropTypes.object).isRequired,
- startId: React.PropTypes.number
+ show: PropTypes.bool.isRequired,
+ onModalDismissed: PropTypes.func.isRequired,
+ fileInfos: PropTypes.arrayOf(PropTypes.object).isRequired,
+ startId: PropTypes.number
};
function LoadingImagePreview({progress, loading}) {
@@ -338,8 +339,8 @@ function LoadingImagePreview({progress, loading}) {
}
LoadingImagePreview.propTypes = {
- progress: React.PropTypes.number,
- loading: React.PropTypes.string
+ progress: PropTypes.number,
+ loading: PropTypes.string
};
function ImagePreview({fileInfo, fileUrl}) {
@@ -363,6 +364,6 @@ function ImagePreview({fileInfo, fileUrl}) {
}
ImagePreview.propTypes = {
- fileInfo: React.PropTypes.object.isRequired,
- fileUrl: React.PropTypes.string.isRequired
+ fileInfo: PropTypes.object.isRequired,
+ fileUrl: PropTypes.string.isRequired
};
diff --git a/webapp/components/view_image_popover_bar.jsx b/webapp/components/view_image_popover_bar.jsx
index 0a07522fc..f07eb19fb 100644
--- a/webapp/components/view_image_popover_bar.jsx
+++ b/webapp/components/view_image_popover_bar.jsx
@@ -3,6 +3,8 @@
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class ViewImagePopoverBar extends React.Component {
@@ -75,10 +77,10 @@ ViewImagePopoverBar.defaultProps = {
};
ViewImagePopoverBar.propTypes = {
- show: React.PropTypes.bool.isRequired,
- fileId: React.PropTypes.number.isRequired,
- totalFiles: React.PropTypes.number.isRequired,
- filename: React.PropTypes.string.isRequired,
- fileURL: React.PropTypes.string.isRequired,
- onGetPublicLink: React.PropTypes.func.isRequired
+ show: PropTypes.bool.isRequired,
+ fileId: PropTypes.number.isRequired,
+ totalFiles: PropTypes.number.isRequired,
+ filename: PropTypes.string.isRequired,
+ fileURL: PropTypes.string.isRequired,
+ onGetPublicLink: PropTypes.func.isRequired
};
diff --git a/webapp/components/webrtc/components/webrtc_header.jsx b/webapp/components/webrtc/components/webrtc_header.jsx
index 56bd65ed7..cb5172a3c 100644
--- a/webapp/components/webrtc/components/webrtc_header.jsx
+++ b/webapp/components/webrtc/components/webrtc_header.jsx
@@ -6,95 +6,95 @@ import Constants from 'utils/constants.jsx';
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
import {FormattedMessage} from 'react-intl';
+import PropTypes from 'prop-types';
+
import React from 'react';
-export default class WebrtcHeader extends React.Component {
- render() {
- const title = (
+export default function WebrtcHeader(props) {
+ const title = (
+ <FormattedMessage
+ id='webrtc.header'
+ defaultMessage='Call with {username}'
+ values={{
+ username: props.username
+ }}
+ />
+ );
+
+ const closeSidebarTooltip = (
+ <Tooltip id='closeSidebarTooltip'>
<FormattedMessage
- id='webrtc.header'
- defaultMessage='Call with {username}'
- values={{
- username: this.props.username
- }}
+ id='rhs_header.closeTooltip'
+ defaultMessage='Close Sidebar'
/>
- );
+ </Tooltip>
+ );
- const closeSidebarTooltip = (
- <Tooltip id='closeSidebarTooltip'>
- <FormattedMessage
- id='rhs_header.closeTooltip'
- defaultMessage='Close Sidebar'
- />
- </Tooltip>
- );
-
- const expandSidebarTooltip = (
- <Tooltip id='expandSidebarTooltip'>
- <FormattedMessage
- id='rhs_header.expandTooltip'
- defaultMessage='Expand Sidebar'
- />
- </Tooltip>
- );
+ const expandSidebarTooltip = (
+ <Tooltip id='expandSidebarTooltip'>
+ <FormattedMessage
+ id='rhs_header.expandTooltip'
+ defaultMessage='Expand Sidebar'
+ />
+ </Tooltip>
+ );
- const shrinkSidebarTooltip = (
- <Tooltip id='shrinkSidebarTooltip'>
- <FormattedMessage
- id='rhs_header.expandTooltip'
- defaultMessage='Shrink Sidebar'
- />
- </Tooltip>
- );
+ const shrinkSidebarTooltip = (
+ <Tooltip id='shrinkSidebarTooltip'>
+ <FormattedMessage
+ id='rhs_header.expandTooltip'
+ defaultMessage='Shrink Sidebar'
+ />
+ </Tooltip>
+ );
- return (
- <div className='sidebar--right__header'>
- <span className='sidebar--right__title'>{title}</span>
- <div className='pull-right'>
- <button
- type='button'
- className='sidebar--right__expand'
- aria-label='Expand'
- onClick={this.props.toggleSize}
+ return (
+ <div className='sidebar--right__header'>
+ <span className='sidebar--right__title'>{title}</span>
+ <div className='pull-right'>
+ <button
+ type='button'
+ className='sidebar--right__expand'
+ aria-label='Expand'
+ onClick={props.toggleSize}
+ >
+ <OverlayTrigger
+ delayShow={Constants.OVERLAY_TIME_DELAY}
+ placement='top'
+ overlay={expandSidebarTooltip}
+ >
+ <i className='fa fa-expand'/>
+ </OverlayTrigger>
+ <OverlayTrigger
+ delayShow={Constants.OVERLAY_TIME_DELAY}
+ placement='top'
+ overlay={shrinkSidebarTooltip}
>
- <OverlayTrigger
- delayShow={Constants.OVERLAY_TIME_DELAY}
- placement='top'
- overlay={expandSidebarTooltip}
- >
- <i className='fa fa-expand'/>
- </OverlayTrigger>
- <OverlayTrigger
- delayShow={Constants.OVERLAY_TIME_DELAY}
- placement='top'
- overlay={shrinkSidebarTooltip}
- >
- <i className='fa fa-compress'/>
- </OverlayTrigger>
- </button>
- <button
- type='button'
- className='sidebar--right__close'
- aria-label='Close'
- title='Close'
- onClick={this.props.onClose}
+ <i className='fa fa-compress'/>
+ </OverlayTrigger>
+ </button>
+ <button
+ type='button'
+ className='sidebar--right__close'
+ aria-label='Close'
+ title='Close'
+ onClick={props.onClose}
+ >
+ <OverlayTrigger
+ delayShow={Constants.OVERLAY_TIME_DELAY}
+ placement='top'
+ overlay={closeSidebarTooltip}
>
- <OverlayTrigger
- delayShow={Constants.OVERLAY_TIME_DELAY}
- placement='top'
- overlay={closeSidebarTooltip}
- >
- <i className='fa fa-sign-out'/>
- </OverlayTrigger>
- </button>
- </div>
+ <i className='fa fa-sign-out'/>
+ </OverlayTrigger>
+ </button>
</div>
- );
- }
+ </div>
+ );
}
WebrtcHeader.propTypes = {
- username: React.PropTypes.string.isRequired,
- onClose: React.PropTypes.func.isRequired,
- toggleSize: React.PropTypes.func
+ username: PropTypes.string.isRequired,
+ onClose: PropTypes.func.isRequired,
+ toggleSize: PropTypes.func
};
diff --git a/webapp/components/webrtc/webrtc_controller.jsx b/webapp/components/webrtc/webrtc_controller.jsx
index 02c064026..b9a44468e 100644
--- a/webapp/components/webrtc/webrtc_controller.jsx
+++ b/webapp/components/webrtc/webrtc_controller.jsx
@@ -19,6 +19,8 @@ import * as WebrtcActions from 'actions/webrtc_actions.jsx';
import * as Utils from 'utils/utils.jsx';
import {Constants, UserStatuses, WebrtcActionTypes} from 'utils/constants.jsx';
+import PropTypes from 'prop-types';
+
import React from 'react';
import {FormattedMessage} from 'react-intl';
@@ -1235,9 +1237,9 @@ export default class WebrtcController extends React.Component {
}
WebrtcController.propTypes = {
- currentUser: React.PropTypes.object,
- userId: React.PropTypes.string.isRequired,
- isCaller: React.PropTypes.bool.isRequired,
- expanded: React.PropTypes.bool.isRequired,
- toggleSize: React.PropTypes.func
+ currentUser: PropTypes.object,
+ userId: PropTypes.string.isRequired,
+ isCaller: PropTypes.bool.isRequired,
+ expanded: PropTypes.bool.isRequired,
+ toggleSize: PropTypes.func
};
diff --git a/webapp/components/youtube_video.jsx b/webapp/components/youtube_video.jsx
index 48c426b73..0127fcb88 100644
--- a/webapp/components/youtube_video.jsx
+++ b/webapp/components/youtube_video.jsx
@@ -7,6 +7,8 @@ import * as Utils from 'utils/utils.jsx';
const ytRegex = /(?:http|https):\/\/(?:www\.|m\.)?(?:(?:youtube\.com\/(?:(?:v\/)|(?:(?:watch|embed\/watch)(?:\/|.*v=))|(?:embed\/)|(?:user\/[^/]+\/u\/[0-9]\/)))|(?:youtu\.be\/))([^#&?]*)/;
+import PropTypes from 'prop-types';
+
import React from 'react';
export default class YoutubeVideo extends React.Component {
@@ -233,7 +235,7 @@ export default class YoutubeVideo extends React.Component {
}
YoutubeVideo.propTypes = {
- channelId: React.PropTypes.string.isRequired,
- link: React.PropTypes.string.isRequired,
- show: React.PropTypes.bool.isRequired
+ channelId: PropTypes.string.isRequired,
+ link: PropTypes.string.isRequired,
+ show: PropTypes.bool.isRequired
};
diff --git a/webapp/package.json b/webapp/package.json
index 84f012c55..3b2e8792a 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -6,7 +6,7 @@
"version": "0.0.1",
"private": true,
"dependencies": {
- "autolinker": "1.4.2",
+ "autolinker": "1.4.3",
"bootstrap": "3.3.7",
"bootstrap-colorpicker": "2.3.6",
"chart.js": "2.5.0",
@@ -14,83 +14,82 @@
"fastclick": "1.0.6",
"flux": "3.1.2",
"font-awesome": "4.7.0",
- "highlight.js": "9.10.0",
+ "highlight.js": "9.11.0",
"inobounce": "0.1.4",
"intl": "1.2.5",
"jasny-bootstrap": "3.1.3",
- "jquery": "3.1.1",
+ "jquery": "3.2.1",
"localforage": "1.5.0",
"marked": "mattermost/marked#8f5902fff9bad793cd6c66e0c44002c9e79e1317",
"match-at": "0.1.0",
"mattermost-redux": "mattermost/mattermost-redux#webapp-master",
"object-assign": "4.1.1",
- "pdfjs-dist": "1.7.363",
- "perfect-scrollbar": "0.6.16",
- "prop-types": "15.5.9",
- "react": "15.4.2",
- "react-addons-pure-render-mixin": "15.4.2",
- "react-bootstrap": "0.30.8",
- "react-custom-scrollbars": "4.0.2",
- "react-dom": "15.4.2",
- "react-intl": "2.2.3",
+ "pdfjs-dist": "1.8.361",
+ "perfect-scrollbar": "0.7.0",
+ "prop-types": "15.5.10",
+ "react": "15.5.4",
+ "react-addons-pure-render-mixin": "15.5.2",
+ "react-bootstrap": "0.31.0",
+ "react-custom-scrollbars": "4.1.2",
+ "react-dom": "15.5.4",
+ "react-intl": "2.3.0",
"react-redux": "5.0.4",
"react-router": "2.8.1",
- "react-select": "1.0.0-rc.3",
- "redux-batched-actions": "0.1.5",
- "redux-persist": "4.6.0",
+ "react-select": "1.0.0-rc.4",
+ "redux-batched-actions": "0.2.0",
+ "redux-persist": "4.8.0",
"redux-persist-transform-filter": "0.0.9",
- "superagent": "3.5.0",
+ "superagent": "3.5.2",
"twemoji": "2.2.5",
- "velocity-animate": "1.4.3",
- "webrtc-adapter": "3.2.0",
+ "velocity-animate": "1.5.0",
+ "webrtc-adapter": "3.4.2",
"whatwg-fetch": "2.0.3",
- "xregexp": "3.1.1"
+ "xregexp": "3.2.0"
},
"devDependencies": {
"babel-cli": "6.24.1",
- "babel-core": "6.24.0",
+ "babel-core": "6.24.1",
"babel-eslint": "7.1.1",
- "babel-jest": "19.0.0",
- "babel-loader": "6.4.0",
- "babel-plugin-module-resolver": "2.7.0",
+ "babel-jest": "20.0.3",
+ "babel-loader": "7.0.0",
+ "babel-plugin-module-resolver": "2.7.1",
"babel-plugin-transform-runtime": "6.23.0",
"babel-polyfill": "6.23.0",
- "babel-preset-es2015": "6.24.0",
- "babel-preset-react": "6.23.0",
- "babel-preset-stage-0": "6.22.0",
+ "babel-preset-es2015": "6.24.1",
+ "babel-preset-react": "6.24.1",
+ "babel-preset-stage-0": "6.24.1",
"copy-webpack-plugin": "4.0.1",
- "cross-env": "3.2.3",
- "css-loader": "0.27.3",
- "enzyme": "2.7.1",
- "enzyme-to-json": "1.5.0",
+ "cross-env": "5.0.0",
+ "css-loader": "0.28.1",
+ "enzyme": "2.8.2",
+ "enzyme-to-json": "1.5.1",
"eslint": "3.17.1",
"eslint-plugin-react": "6.10.0",
"exports-loader": "0.6.4",
"extract-text-webpack-plugin": "2.1.0",
- "file-loader": "0.10.1",
+ "file-loader": "0.11.1",
"html-loader": "0.4.5",
"html-webpack-plugin": "2.28.0",
"identity-obj-proxy": "3.0.0",
- "image-webpack-loader": "3.2.0",
+ "image-webpack-loader": "3.3.1",
"imports-loader": "0.7.1",
- "jest": "19.0.2",
- "jest-cli": "19.0.2",
+ "jest": "20.0.3",
+ "jest-cli": "20.0.3",
"jquery-deferred": "0.3.1",
- "jsdom": "9.12.0",
- "jsdom-global": "2.1.1",
+ "jsdom": "10.1.0",
+ "jsdom-global": "3.0.2",
"json-loader": "0.5.4",
- "node-sass": "4.5.0",
+ "node-sass": "4.5.3",
"raw-loader": "0.5.1",
- "react-addons-test-utils": "15.4.2",
- "react-dom": "15.4.2",
- "react-outside-event": "1.2.4",
- "remote-redux-devtools": "0.5.7",
- "remote-redux-devtools-on-debugger": "0.7.0",
- "sass-loader": "6.0.3",
- "style-loader": "0.13.2",
+ "react-addons-test-utils": "15.5.1",
+ "react-outside-event": "1.2.5",
+ "remote-redux-devtools": "0.5.10",
+ "remote-redux-devtools-on-debugger": "0.7.1",
+ "sass-loader": "6.0.5",
+ "style-loader": "0.17.0",
"url-loader": "0.5.8",
- "webpack": "2.2.1",
- "webpack-node-externals": "1.5.4"
+ "webpack": "2.5.1",
+ "webpack-node-externals": "1.6.0"
},
"jest": {
"snapshotSerializers": [
@@ -132,6 +131,7 @@
"run": "cross-env NODE_ENV=production webpack --progress --watch",
"run-fullmap": "webpack --progress --watch",
"test": "jest",
+ "updatesnapshot": "jest --updateSnapshot",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
}
diff --git a/webapp/tests/components/__snapshots__/about_build_modal.test.jsx.snap b/webapp/tests/components/__snapshots__/about_build_modal.test.jsx.snap
index f5c6647c9..105c97546 100644
--- a/webapp/tests/components/__snapshots__/about_build_modal.test.jsx.snap
+++ b/webapp/tests/components/__snapshots__/about_build_modal.test.jsx.snap
@@ -12,11 +12,14 @@ exports[`components/AboutBuildModal should match snapshot for enterprise edition
keyboard={true}
manager={
ModalManager {
+ "add": [Function],
"containers": Array [],
"data": Array [],
"handleContainerOverflow": true,
"hideSiblingNodes": true,
+ "isTopModal": [Function],
"modals": Array [],
+ "remove": [Function],
}
}
onHide={[Function]}
@@ -25,9 +28,9 @@ exports[`components/AboutBuildModal should match snapshot for enterprise edition
show={true}
>
<ModalHeader
- aria-label="Close"
bsClass="modal-header"
closeButton={true}
+ closeLabel="Close"
>
<ModalTitle
bsClass="modal-title"
@@ -183,11 +186,14 @@ exports[`components/AboutBuildModal should match snapshot for team edition 1`] =
keyboard={true}
manager={
ModalManager {
+ "add": [Function],
"containers": Array [],
"data": Array [],
"handleContainerOverflow": true,
"hideSiblingNodes": true,
+ "isTopModal": [Function],
"modals": Array [],
+ "remove": [Function],
}
}
onHide={[Function]}
@@ -196,9 +202,9 @@ exports[`components/AboutBuildModal should match snapshot for team edition 1`] =
show={true}
>
<ModalHeader
- aria-label="Close"
bsClass="modal-header"
closeButton={true}
+ closeLabel="Close"
>
<ModalTitle
bsClass="modal-title"
diff --git a/webapp/tests/components/__snapshots__/new_channel_modal.test.jsx.snap b/webapp/tests/components/__snapshots__/new_channel_modal.test.jsx.snap
index 67194d321..fb27ef395 100644
--- a/webapp/tests/components/__snapshots__/new_channel_modal.test.jsx.snap
+++ b/webapp/tests/components/__snapshots__/new_channel_modal.test.jsx.snap
@@ -14,11 +14,14 @@ exports[`components/NewChannelModal should match snapshot, modal not showing 1`]
keyboard={true}
manager={
ModalManager {
+ "add": [Function],
"containers": Array [],
"data": Array [],
"handleContainerOverflow": true,
"hideSiblingNodes": true,
+ "isTopModal": [Function],
"modals": Array [],
+ "remove": [Function],
}
}
onHide={[Function]}
@@ -27,9 +30,9 @@ exports[`components/NewChannelModal should match snapshot, modal not showing 1`]
show={true}
>
<ModalHeader
- aria-label="Close"
bsClass="modal-header"
closeButton={true}
+ closeLabel="Close"
>
<ModalTitle
bsClass="modal-title"
@@ -258,11 +261,14 @@ exports[`components/NewChannelModal should match snapshot, modal showing 1`] = `
keyboard={true}
manager={
ModalManager {
+ "add": [Function],
"containers": Array [],
"data": Array [],
"handleContainerOverflow": true,
"hideSiblingNodes": true,
+ "isTopModal": [Function],
"modals": Array [],
+ "remove": [Function],
}
}
onHide={[Function]}
@@ -271,9 +277,9 @@ exports[`components/NewChannelModal should match snapshot, modal showing 1`] = `
show={true}
>
<ModalHeader
- aria-label="Close"
bsClass="modal-header"
closeButton={true}
+ closeLabel="Close"
>
<ModalTitle
bsClass="modal-title"
@@ -502,11 +508,14 @@ exports[`components/NewChannelModal should match snapshot, private channel fille
keyboard={true}
manager={
ModalManager {
+ "add": [Function],
"containers": Array [],
"data": Array [],
"handleContainerOverflow": true,
"hideSiblingNodes": true,
+ "isTopModal": [Function],
"modals": Array [],
+ "remove": [Function],
}
}
onHide={[Function]}
@@ -515,9 +524,9 @@ exports[`components/NewChannelModal should match snapshot, private channel fille
show={true}
>
<ModalHeader
- aria-label="Close"
bsClass="modal-header"
closeButton={true}
+ closeLabel="Close"
>
<ModalTitle
bsClass="modal-title"
diff --git a/webapp/webpack.config.js b/webapp/webpack.config.js
index 40b16139b..6bc2834e0 100644
--- a/webapp/webpack.config.js
+++ b/webapp/webpack.config.js
@@ -22,77 +22,232 @@ if (NPM_TARGET === 'test') {
TEST = true;
}
+const STANDARD_EXCLUDE = [
+ path.join(__dirname, 'node_modules'),
+ path.join(__dirname, 'non_npm_dependencies')
+];
+
+var MYSTATS = {
+
+ // Add asset Information
+ assets: false,
+
+ // Sort assets by a field
+ assetsSort: '',
+
+ // Add information about cached (not built) modules
+ cached: true,
+
+ // Show cached assets (setting this to `false` only shows emitted files)
+ cachedAssets: true,
+
+ // Add children information
+ children: true,
+
+ // Add chunk information (setting this to `false` allows for a less verbose output)
+ chunks: true,
+
+ // Add built modules information to chunk information
+ chunkModules: true,
+
+ // Add the origins of chunks and chunk merging info
+ chunkOrigins: true,
+
+ // Sort the chunks by a field
+ chunksSort: '',
+
+ // `webpack --colors` equivalent
+ colors: true,
+
+ // Display the distance from the entry point for each module
+ depth: true,
+
+ // Display the entry points with the corresponding bundles
+ entrypoints: true,
+
+ // Add errors
+ errors: true,
+
+ // Add details to errors (like resolving log)
+ errorDetails: true,
+
+ // Exclude modules which match one of the given strings or regular expressions
+ exclude: [],
+
+ // Add the hash of the compilation
+ hash: true,
+
+ // Set the maximum number of modules to be shown
+ maxModules: 0,
+
+ // Add built modules information
+ modules: false,
+
+ // Sort the modules by a field
+ modulesSort: '!size',
+
+ // Show performance hint when file size exceeds `performance.maxAssetSize`
+ performance: true,
+
+ // Show the exports of the modules
+ providedExports: true,
+
+ // Add public path information
+ publicPath: true,
+
+ // Add information about the reasons why modules are included
+ reasons: true,
+
+ // Add the source code of modules
+ source: true,
+
+ // Add timing information
+ timings: true,
+
+ // Show which exports of a module are used
+ usedExports: true,
+
+ // Add webpack version information
+ version: true,
+
+ // Add warnings
+ warnings: true,
+
+ // Filter warnings to be shown (since webpack 2.4.0),
+ // can be a String, Regexp, a function getting the warning and returning a boolean
+ // or an Array of a combination of the above. First match wins.
+ warningsFilter: ''
+};
+
var config = {
entry: ['babel-polyfill', 'whatwg-fetch', './root.jsx', 'root.html'],
output: {
- path: 'dist',
+ path: path.join(__dirname, 'dist'),
publicPath: '/static/',
filename: '[name].[hash].js',
chunkFilename: '[name].[chunkhash].js'
},
module: {
- loaders: [
+ rules: [
{
test: /\.(js|jsx)?$/,
- loader: 'babel-loader',
- exclude: /(node_modules|non_npm_dependencies)/,
- query: {
- presets: [
- 'react',
- ['es2015', {modules: false}],
- 'stage-0'
- ],
- plugins: ['transform-runtime'],
- cacheDirectory: DEV
- }
+ exclude: STANDARD_EXCLUDE,
+ use: [
+ {
+ loader: 'babel-loader',
+ options: {
+ presets: [
+ 'react',
+ ['es2015', {modules: false}],
+ 'stage-0'
+ ],
+ plugins: ['transform-runtime'],
+ cacheDirectory: true
+ }
+ }
+ ]
},
{
test: /\.json$/,
exclude: /manifest\.json$/,
- loader: 'json-loader'
+ use: [
+ {
+ loader: 'json-loader'
+ }
+ ]
},
{
test: /manifest\.json$/,
- loader: 'file-loader?name=files/[hash].[ext]'
+ use: [
+ {
+ loader: 'file-loader?name=files/[hash].[ext]'
+ }
+ ]
},
{
test: /(node_modules|non_npm_dependencies)(\\|\/).+\.(js|jsx)$/,
- loader: 'imports-loader',
- query: {
- $: 'jquery',
- jQuery: 'jquery'
- }
+ use: [
+ {
+ loader: 'imports-loader',
+ options: {
+ $: 'jquery',
+ jQuery: 'jquery'
+ }
+ }
+ ]
},
{
test: /\.scss$/,
- use: [{
- loader: 'style-loader'
- }, {
- loader: 'css-loader'
- }, {
- loader: 'sass-loader',
- options: {
- includePaths: ['node_modules/compass-mixins/lib']
+ use: [
+ {
+ loader: 'style-loader'
+ },
+ {
+ loader: 'css-loader'
+ },
+ {
+ loader: 'sass-loader',
+ options: {
+ includePaths: ['node_modules/compass-mixins/lib']
+ }
}
- }]
+ ]
},
{
test: /\.css$/,
- loaders: ['style-loader', 'css-loader']
+ use: [
+ {
+ loader: 'style-loader'
+ },
+ {
+ loader: 'css-loader'
+ }
+ ]
},
{
test: /\.(png|eot|tiff|svg|woff2|woff|ttf|gif|mp3|jpg)$/,
- loaders: [
- 'file-loader?name=files/[hash].[ext]',
- 'image-webpack-loader'
+ use: [
+ {
+ loader: 'file-loader',
+ options: {
+ name: 'files/[hash].[ext]'
+ }
+ },
+ {
+ loader: 'image-webpack-loader',
+ options: {}
+ }
]
},
{
test: /\.html$/,
- loader: 'html-loader?attrs=link:href'
+ use: [
+ {
+ loader: 'html-loader',
+ options: {
+ attrs: 'link:href'
+ }
+ }
+ ]
}
]
},
+ resolve: {
+ modules: [
+ 'node_modules',
+ 'non_npm_dependencies',
+ path.resolve(__dirname)
+ ],
+ alias: {
+ jquery: 'jquery/dist/jquery',
+ superagent: 'node_modules/superagent/lib/client'
+ }
+ },
+ performance: {
+ hints: 'warning'
+ },
+ target: 'web',
+ stats: MYSTATS,
plugins: [
new webpack.ProvidePlugin({
'window.jQuery': 'jquery'
@@ -105,18 +260,7 @@ var config = {
minChunks: 2,
children: true
})
- ],
- resolve: {
- alias: {
- jquery: 'jquery/dist/jquery',
- superagent: 'node_modules/superagent/lib/client'
- },
- modules: [
- 'node_modules',
- 'non_npm_dependencies',
- path.resolve(__dirname)
- ]
- }
+ ]
};
// Development mode configuration
@@ -124,7 +268,7 @@ if (DEV) {
if (FULLMAP) {
config.devtool = 'source-map';
} else {
- config.devtool = 'eval-cheap-module-source-map';
+ config.devtool = 'cheap-module-eval-source-map';
}
}
diff --git a/webapp/yarn.lock b/webapp/yarn.lock
new file mode 100644
index 000000000..3c114f88b
--- /dev/null
+++ b/webapp/yarn.lock
@@ -0,0 +1,7929 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abab@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
+
+abbrev@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
+
+accepts@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
+ dependencies:
+ mime-types "~2.1.11"
+ negotiator "0.6.1"
+
+acorn-dynamic-import@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+ dependencies:
+ acorn "^4.0.3"
+
+acorn-globals@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ dependencies:
+ acorn "^4.0.4"
+
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ dependencies:
+ acorn "^3.0.4"
+
+acorn@^1.0.3:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
+
+acorn@^3.0.4:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+
+acorn@^4.0.3, acorn@^4.0.4:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
+
+acorn@^5.0.0, acorn@^5.0.1:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
+
+add-px-to-style@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a"
+
+ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+
+ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1:
+ version "4.11.7"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+
+ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+
+ansi-regex@^2.0.0, ansi-regex@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+ansi-styles@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1"
+ dependencies:
+ color-convert "^1.0.0"
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+append-transform@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+ dependencies:
+ default-require-extensions "^1.0.0"
+
+aproba@^1.0.3:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
+
+archive-type@^3.0.0, archive-type@^3.0.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6"
+ dependencies:
+ file-type "^3.1.0"
+
+are-we-there-yet@~1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
+
+array-differ@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
+
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+array.prototype.find@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+arrify@^1.0.0, arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+
+asap@~2.0.3:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
+
+asn1.js@^4.0.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ dependencies:
+ util "0.10.3"
+
+ast-types@0.8.15:
+ version "0.8.15"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.15.tgz#8eef0827f04dff0ec8857ba925abe3fea6194e52"
+
+ast-types@0.9.6:
+ version "0.9.6"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
+
+async-each-series@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async-foreach@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+
+async@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.0.0.tgz#d0900ad385af13804540a109c42166e3ae7b2b9d"
+ dependencies:
+ lodash "^4.8.0"
+
+async@^1.4.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@^2.1.2, async@^2.1.4, async@^2.1.5:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9"
+ dependencies:
+ lodash "^4.14.0"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
+autolinker@1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-1.4.3.tgz#2e615057c8e371399a6d77949a9a6af24fe46dfc"
+
+autoprefixer@^6.3.1:
+ version "6.7.7"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+ dependencies:
+ browserslist "^1.7.6"
+ caniuse-db "^1.0.30000634"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^5.2.16"
+ postcss-value-parser "^3.2.3"
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+
+aws4@^1.2.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+
+babel-cli@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283"
+ dependencies:
+ babel-core "^6.24.1"
+ babel-polyfill "^6.23.0"
+ babel-register "^6.24.1"
+ babel-runtime "^6.22.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^7.0.0"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.6.1"
+
+babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
+babel-core@^6.0.0, babel-core@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83"
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-generator "^6.24.1"
+ babel-helpers "^6.24.1"
+ babel-messages "^6.23.0"
+ babel-register "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-eslint@7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.1.1.tgz#8a6a884f085aa7060af69cfc77341c2f99370fb2"
+ dependencies:
+ babel-code-frame "^6.16.0"
+ babel-traverse "^6.15.0"
+ babel-types "^6.15.0"
+ babylon "^6.13.0"
+ lodash.pickby "^4.6.0"
+
+babel-generator@^6.18.0, babel-generator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
+ dependencies:
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+ trim-right "^1.0.1"
+
+babel-helper-bindify-decorators@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
+ dependencies:
+ babel-helper-explode-assignable-expression "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-builder-react-jsx@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+ esutils "^2.0.0"
+
+babel-helper-call-delegate@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+ lodash "^4.2.0"
+
+babel-helper-explode-assignable-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-helper-explode-class@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-hoist-variables@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-optimise-call-expression@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-helper-regex@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+ lodash "^4.2.0"
+
+babel-helper-remap-async-to-generator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-jest@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671"
+ dependencies:
+ babel-core "^6.0.0"
+ babel-plugin-istanbul "^4.0.0"
+ babel-preset-jest "^20.0.3"
+
+babel-loader@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7"
+ dependencies:
+ find-cache-dir "^0.1.1"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+
+babel-messages@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-istanbul@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9"
+ dependencies:
+ find-up "^2.1.0"
+ istanbul-lib-instrument "^1.6.2"
+ test-exclude "^4.0.3"
+
+babel-plugin-jest-hoist@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767"
+
+babel-plugin-module-resolver@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-2.7.1.tgz#18be3c42ddf59f7a456c9e0512cd91394f6e4be1"
+ dependencies:
+ find-babel-config "^1.0.1"
+ glob "^7.1.1"
+ resolve "^1.2.0"
+
+babel-plugin-syntax-async-functions@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
+
+babel-plugin-syntax-async-generators@^6.5.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
+
+babel-plugin-syntax-class-constructor-call@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
+
+babel-plugin-syntax-class-properties@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
+
+babel-plugin-syntax-decorators@^6.13.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
+
+babel-plugin-syntax-do-expressions@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
+
+babel-plugin-syntax-dynamic-import@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
+
+babel-plugin-syntax-exponentiation-operator@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
+
+babel-plugin-syntax-export-extensions@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
+
+babel-plugin-syntax-flow@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+
+babel-plugin-syntax-function-bind@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
+
+babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+
+babel-plugin-syntax-object-rest-spread@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+
+babel-plugin-syntax-trailing-function-commas@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
+
+babel-plugin-transform-async-generator-functions@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
+ dependencies:
+ babel-plugin-syntax-class-constructor-call "^6.18.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-class-properties@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
+ dependencies:
+ 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-do-expressions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
+ dependencies:
+ babel-plugin-syntax-do-expressions "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+ lodash "^4.2.0"
+
+babel-plugin-transform-es2015-classes@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-destructuring@^6.22.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-for-of@^6.22.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
+ dependencies:
+ babel-helper-function-name "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
+ dependencies:
+ babel-plugin-transform-strict-mode "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
+ dependencies:
+ babel-helper-hoist-variables "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
+ dependencies:
+ babel-helper-replace-supers "^6.24.1"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
+ dependencies:
+ babel-helper-regex "^6.24.1"
+ babel-runtime "^6.22.0"
+ regexpu-core "^2.0.0"
+
+babel-plugin-transform-exponentiation-operator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
+ dependencies:
+ 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@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
+ dependencies:
+ babel-plugin-syntax-export-extensions "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-flow-strip-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
+ dependencies:
+ babel-plugin-syntax-flow "^6.18.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-function-bind@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
+ dependencies:
+ babel-plugin-syntax-function-bind "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-object-rest-spread@^6.22.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
+ dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-display-name@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-self@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-source@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
+ dependencies:
+ babel-helper-builder-react-jsx "^6.24.1"
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-regenerator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
+ dependencies:
+ regenerator-transform "0.9.11"
+
+babel-plugin-transform-runtime@6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-strict-mode@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+
+babel-polyfill@6.23.0, babel-polyfill@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
+ dependencies:
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-es2015@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
+ dependencies:
+ 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-flow@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
+ dependencies:
+ babel-plugin-transform-flow-strip-types "^6.22.0"
+
+babel-preset-jest@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a"
+ dependencies:
+ babel-plugin-jest-hoist "^20.0.3"
+
+babel-preset-react@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
+ dependencies:
+ 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-0@6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
+ dependencies:
+ babel-plugin-transform-do-expressions "^6.22.0"
+ babel-plugin-transform-function-bind "^6.22.0"
+ babel-preset-stage-1 "^6.24.1"
+
+babel-preset-stage-1@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
+ dependencies:
+ 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@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
+ dependencies:
+ babel-core "^6.24.1"
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.16.0, babel-template@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.15.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.24.1"
+ babylon "^6.15.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
+ dependencies:
+ babel-runtime "^6.22.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:
+ version "6.17.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932"
+
+balanced-match@^0.4.1, balanced-match@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+base-64@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
+
+base62@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/base62/-/base62-0.1.1.tgz#7b4174c2f94449753b11c2651c083da841a7b084"
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+
+base64id@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f"
+
+base64url@2.0.0, base64url@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+ dependencies:
+ tweetnacl "^0.14.3"
+
+beeper@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+
+bin-build@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc"
+ dependencies:
+ archive-type "^3.0.1"
+ decompress "^3.0.0"
+ download "^4.1.2"
+ exec-series "^1.0.0"
+ rimraf "^2.2.6"
+ tempfile "^1.0.0"
+ url-regex "^3.0.0"
+
+bin-check@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930"
+ dependencies:
+ executable "^1.0.0"
+
+bin-version-check@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0"
+ dependencies:
+ bin-version "^1.0.0"
+ minimist "^1.1.0"
+ semver "^4.0.3"
+ semver-truncate "^1.0.0"
+
+bin-version@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e"
+ dependencies:
+ find-versions "^1.0.0"
+
+bin-wrapper@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb"
+ dependencies:
+ bin-check "^2.0.0"
+ bin-version-check "^2.1.0"
+ download "^4.0.0"
+ each-async "^1.1.1"
+ lazy-req "^1.0.0"
+ os-filter-obj "^1.0.0"
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+
+bl@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98"
+ dependencies:
+ readable-stream "^2.0.5"
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ dependencies:
+ inherits "~2.0.0"
+
+bluebird@^2.10.2:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
+
+bluebird@^3.4.7:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+
+body-parser@^1.15.0:
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47"
+ dependencies:
+ bytes "2.4.0"
+ content-type "~1.0.2"
+ debug "2.6.1"
+ depd "~1.1.0"
+ http-errors "~1.6.1"
+ iconv-lite "0.4.15"
+ on-finished "~2.3.0"
+ qs "6.4.0"
+ raw-body "~2.2.0"
+ type-is "~1.6.14"
+
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ dependencies:
+ hoek "2.x.x"
+
+bootstrap-colorpicker@2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/bootstrap-colorpicker/-/bootstrap-colorpicker-2.3.6.tgz#816095c35dd7919dcb4de3f0c807f13b121e8f17"
+ dependencies:
+ jquery ">=1.10"
+
+bootstrap@3.3.7:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71"
+
+brace-expansion@^1.0.0:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+
+browser-resolve@^1.11.2:
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+ dependencies:
+ resolve "1.1.7"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
+ dependencies:
+ buffer-xor "^1.0.2"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ dependencies:
+ pako "~0.2.0"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+ dependencies:
+ caniuse-db "^1.0.30000639"
+ electron-to-chromium "^1.2.7"
+
+bser@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169"
+ dependencies:
+ node-int64 "^0.4.0"
+
+bser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
+ dependencies:
+ node-int64 "^0.4.0"
+
+buffer-crc32@~0.2.3:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+
+buffer-shims@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+
+buffer-to-vinyl@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262"
+ dependencies:
+ file-type "^3.1.0"
+ readable-stream "^2.0.2"
+ uuid "^2.0.1"
+ vinyl "^1.0.0"
+
+buffer-xor@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+
+bytes@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339"
+
+caller-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ dependencies:
+ callsites "^0.2.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+
+camel-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+
+camelcase@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+
+caniuse-api@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+ dependencies:
+ browserslist "^1.3.6"
+ caniuse-db "^1.0.30000529"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+ version "1.0.30000660"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000660.tgz#d2d57b309dc5a11bb5b46018f51855f7a41efee5"
+
+capture-stack-trace@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+
+caw@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034"
+ dependencies:
+ get-proxy "^1.0.1"
+ is-obj "^1.0.0"
+ object-assign "^3.0.0"
+ tunnel-agent "^0.4.0"
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chart.js@2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.5.0.tgz#fe6e751a893769f56e72bee5ad91207e1c592957"
+ dependencies:
+ chartjs-color "^2.0.0"
+ moment "^2.10.6"
+
+chartjs-color-string@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.4.0.tgz#57748d4530ae28d8db0a5492182ba06dfdf2f468"
+ dependencies:
+ color-name "^1.0.0"
+
+chartjs-color@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.1.0.tgz#9c39ac830ccd98996ae80c9f11086ff12c98a756"
+ dependencies:
+ chartjs-color-string "^0.4.0"
+ color-convert "^0.5.3"
+
+cheerio@^0.22.0:
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
+ dependencies:
+ css-select "~1.2.0"
+ dom-serializer "~0.1.0"
+ entities "~1.1.1"
+ htmlparser2 "^3.9.1"
+ lodash.assignin "^4.0.9"
+ lodash.bind "^4.1.4"
+ lodash.defaults "^4.0.1"
+ lodash.filter "^4.4.0"
+ lodash.flatten "^4.2.0"
+ lodash.foreach "^4.3.0"
+ lodash.map "^4.4.0"
+ lodash.merge "^4.4.0"
+ lodash.pick "^4.2.1"
+ lodash.reduce "^4.4.0"
+ lodash.reject "^4.4.0"
+ lodash.some "^4.4.0"
+
+chokidar@^1.4.3, chokidar@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^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"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+ci-info@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
+ dependencies:
+ inherits "^2.0.1"
+
+circular-json@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
+
+clap@^1.0.9:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b"
+ dependencies:
+ chalk "^1.1.3"
+
+classnames@^2.2.4, classnames@^2.2.5:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+
+clean-css@4.0.x:
+ version "4.0.12"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.12.tgz#a02e61707f1840bd3338f54dbc9acbda4e772fa3"
+ dependencies:
+ source-map "0.5.x"
+
+cli-cursor@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+ dependencies:
+ restore-cursor "^1.0.1"
+
+cli-width@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+cliui@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wrap-ansi "^2.0.0"
+
+clone-deep@^0.2.4:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6"
+ dependencies:
+ for-own "^0.1.3"
+ is-plain-object "^2.0.1"
+ kind-of "^3.0.2"
+ lazy-cache "^1.0.3"
+ shallow-clone "^0.1.2"
+
+clone-stats@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
+
+clone@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
+
+clone@^1.0.0, clone@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+
+co@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
+coa@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3"
+ dependencies:
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+
+color-convert@^0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd"
+
+color-convert@^1.0.0, color-convert@^1.3.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
+ dependencies:
+ color-name "^1.1.1"
+
+color-name@^1.0.0, color-name@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d"
+
+color-string@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+ dependencies:
+ color-name "^1.0.0"
+
+color@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+ dependencies:
+ clone "^1.0.2"
+ color-convert "^1.3.0"
+ color-string "^0.3.0"
+
+colormin@^1.0.5:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+ dependencies:
+ color "^0.11.0"
+ css-color-names "0.0.4"
+ has "^1.0.1"
+
+colors@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@2.9.x, commander@^2.8.1:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commander@~2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+
+compass-mixins@0.12.10:
+ version "0.12.10"
+ resolved "https://registry.yarnpkg.com/compass-mixins/-/compass-mixins-0.12.10.tgz#cd9f15f829c4e960cc43bb226f049b28beb99d41"
+
+component-emitter@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe"
+
+component-emitter@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+concat-stream@^1.4.6, concat-stream@^1.4.7:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+console-stream@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+
+content-disposition@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+
+content-type-parser@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
+
+content-type@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
+
+convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+
+cookie@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+
+cookiejar@^2.0.6:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
+
+copy-webpack-plugin@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz#9728e383b94316050d0c7463958f2b85c0aa8200"
+ dependencies:
+ bluebird "^2.10.2"
+ fs-extra "^0.26.4"
+ glob "^6.0.4"
+ is-glob "^3.1.0"
+ loader-utils "^0.2.15"
+ lodash "^4.3.0"
+ minimatch "^3.0.0"
+ node-dir "^0.1.10"
+
+core-js@^1.0.0:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+cors@^2.7.1:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.3.tgz#4cf78e1d23329a7496b2fc2225b77ca5bb5eb802"
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-error-class@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^1.0.0"
+ sha.js "^2.3.6"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
+ dependencies:
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+
+create-react-class@^15.5.1, create-react-class@^15.5.2:
+ version "15.5.3"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.5.3.tgz#fb0f7cae79339e9a179e194ef466efa3923820fe"
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
+cross-env@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.0.tgz#565ccae4d09676441a5087f406fe7661a29c931b"
+ dependencies:
+ cross-spawn "^5.1.0"
+ is-windows "^1.0.0"
+
+cross-spawn@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
+ dependencies:
+ lru-cache "^4.0.1"
+ which "^1.2.9"
+
+cross-spawn@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
+ dependencies:
+ lru-cache "^4.0.1"
+ which "^1.2.9"
+
+cross-spawn@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@^3.11.0:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+
+css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+
+css-loader@^0.28.1:
+ version "0.28.1"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.1.tgz#220325599f8f00452d9ceb4c3ca6c8a66798642d"
+ dependencies:
+ babel-code-frame "^6.11.0"
+ css-selector-tokenizer "^0.7.0"
+ cssnano ">=2.6.1 <4"
+ loader-utils "^1.0.2"
+ lodash.camelcase "^4.3.0"
+ object-assign "^4.0.1"
+ postcss "^5.0.6"
+ postcss-modules-extract-imports "^1.0.0"
+ postcss-modules-local-by-default "^1.0.1"
+ postcss-modules-scope "^1.0.0"
+ postcss-modules-values "^1.1.0"
+ postcss-value-parser "^3.3.0"
+ source-list-map "^0.1.7"
+
+css-select@^1.1.0, css-select@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-selector-tokenizer@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152"
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-what@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+
+cssesc@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+
+"cssnano@>=2.6.1 <4":
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+ dependencies:
+ autoprefixer "^6.3.1"
+ decamelize "^1.1.2"
+ defined "^1.0.0"
+ has "^1.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.14"
+ postcss-calc "^5.2.0"
+ postcss-colormin "^2.1.8"
+ postcss-convert-values "^2.3.4"
+ postcss-discard-comments "^2.0.4"
+ postcss-discard-duplicates "^2.0.1"
+ postcss-discard-empty "^2.0.1"
+ postcss-discard-overridden "^0.1.1"
+ postcss-discard-unused "^2.2.1"
+ postcss-filter-plugins "^2.0.0"
+ postcss-merge-idents "^2.1.5"
+ postcss-merge-longhand "^2.0.1"
+ postcss-merge-rules "^2.0.3"
+ postcss-minify-font-values "^1.0.2"
+ postcss-minify-gradients "^1.0.1"
+ postcss-minify-params "^1.0.4"
+ postcss-minify-selectors "^2.0.4"
+ postcss-normalize-charset "^1.1.0"
+ postcss-normalize-url "^3.0.7"
+ postcss-ordered-values "^2.1.0"
+ postcss-reduce-idents "^2.2.2"
+ postcss-reduce-initial "^1.0.0"
+ postcss-reduce-transforms "^1.0.3"
+ postcss-svgo "^2.1.1"
+ postcss-unique-selectors "^2.0.2"
+ postcss-value-parser "^3.2.3"
+ postcss-zindex "^2.0.1"
+
+csso@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+ dependencies:
+ clap "^1.0.9"
+ source-map "^0.5.3"
+
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+
+"cssstyle@>= 0.2.37 < 0.3.0":
+ version "0.2.37"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+ dependencies:
+ cssom "0.3.x"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ dependencies:
+ array-find-index "^1.0.1"
+
+cycle@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
+
+d@1:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
+ dependencies:
+ es5-ext "^0.10.9"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+
+dateformat@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
+
+debug@2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
+ dependencies:
+ ms "0.7.2"
+
+debug@2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.1.1, debug@^2.2.0, debug@^2.6.3:
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0"
+ dependencies:
+ ms "0.7.3"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+decompress-tar@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466"
+ dependencies:
+ is-tar "^1.0.0"
+ object-assign "^2.0.0"
+ strip-dirs "^1.0.0"
+ tar-stream "^1.1.1"
+ through2 "^0.6.1"
+ vinyl "^0.4.3"
+
+decompress-tarbz2@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d"
+ dependencies:
+ is-bzip2 "^1.0.0"
+ object-assign "^2.0.0"
+ seek-bzip "^1.0.3"
+ strip-dirs "^1.0.0"
+ tar-stream "^1.1.1"
+ through2 "^0.6.1"
+ vinyl "^0.4.3"
+
+decompress-targz@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0"
+ dependencies:
+ is-gzip "^1.0.0"
+ object-assign "^2.0.0"
+ strip-dirs "^1.0.0"
+ tar-stream "^1.1.1"
+ through2 "^0.6.1"
+ vinyl "^0.4.3"
+
+decompress-unzip@^3.0.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb"
+ dependencies:
+ is-zip "^1.0.0"
+ read-all-stream "^3.0.0"
+ stat-mode "^0.2.0"
+ strip-dirs "^1.0.0"
+ through2 "^2.0.0"
+ vinyl "^1.0.0"
+ yauzl "^2.2.1"
+
+decompress@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed"
+ dependencies:
+ buffer-to-vinyl "^1.0.0"
+ concat-stream "^1.4.6"
+ decompress-tar "^3.0.0"
+ decompress-tarbz2 "^3.0.0"
+ decompress-targz "^3.0.0"
+ decompress-unzip "^3.0.0"
+ stream-combiner2 "^1.1.1"
+ vinyl-assign "^1.0.1"
+ vinyl-fs "^2.2.0"
+
+deep-equal@1.0.1, deep-equal@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
+default-require-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+ dependencies:
+ strip-bom "^2.0.0"
+
+define-properties@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
+ dependencies:
+ foreach "^2.0.5"
+ object-keys "^1.0.8"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
+del@^2.0.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+ dependencies:
+ globby "^5.0.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+depd@1.1.0, depd@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ dependencies:
+ repeating "^2.0.0"
+
+diff@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+doctrine@^1.2.2:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+dom-converter@~0.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
+ dependencies:
+ utila "~0.3"
+
+dom-css@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202"
+ dependencies:
+ add-px-to-style "1.0.0"
+ prefix-style "2.0.1"
+ to-camel-case "1.0.0"
+
+dom-helpers@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
+
+dom-serializer@0, dom-serializer@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+ dependencies:
+ domelementtype "~1.1.1"
+ entities "~1.1.1"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+
+domelementtype@1, domelementtype@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+
+domelementtype@~1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+
+domhandler@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
+ dependencies:
+ domelementtype "1"
+
+domhandler@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.5.1, domutils@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+download@^4.0.0, download@^4.1.2:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac"
+ dependencies:
+ caw "^1.0.1"
+ concat-stream "^1.4.7"
+ each-async "^1.0.0"
+ filenamify "^1.0.1"
+ got "^5.0.0"
+ gulp-decompress "^1.2.0"
+ gulp-rename "^1.2.0"
+ is-url "^1.2.0"
+ object-assign "^4.0.1"
+ read-all-stream "^3.0.0"
+ readable-stream "^2.0.2"
+ stream-combiner2 "^1.1.1"
+ vinyl "^1.0.0"
+ vinyl-fs "^2.2.0"
+ ware "^1.2.0"
+
+duplexer2@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
+ dependencies:
+ readable-stream "~1.1.9"
+
+duplexer2@^0.1.4, duplexer2@~0.1.0:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ dependencies:
+ readable-stream "^2.0.2"
+
+duplexify@^3.2.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604"
+ dependencies:
+ end-of-stream "1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+each-async@^1.0.0, each-async@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473"
+ dependencies:
+ onetime "^1.0.0"
+ set-immediate-shim "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ dependencies:
+ jsbn "~0.1.0"
+
+ecdsa-sig-formatter@1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1"
+ dependencies:
+ base64url "^2.0.0"
+ safe-buffer "^5.0.1"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+
+ejs@^2.4.1:
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88"
+
+electron-to-chromium@^1.2.7:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.8.tgz#b2c8a2c79bb89fbbfd3724d9555e15095b5f5fb6"
+
+elliptic@^6.0.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+
+encodeurl@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+
+encoding@^0.1.11:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
+ dependencies:
+ iconv-lite "~0.4.13"
+
+end-of-stream@1.0.0, end-of-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e"
+ dependencies:
+ once "~1.3.0"
+
+enhanced-resolve@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec"
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ object-assign "^4.0.1"
+ tapable "^0.2.5"
+
+entities@^1.1.1, entities@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+
+enzyme-to-json@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-1.5.1.tgz#e34f4d126bb3f4696ce3800b51f9ed83df708799"
+ dependencies:
+ lodash.filter "^4.6.0"
+ lodash.isnil "^4.0.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.omitby "^4.5.0"
+ lodash.range "^3.2.0"
+ object-values "^1.0.0"
+ object.entries "^1.0.3"
+
+enzyme@2.8.2:
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.8.2.tgz#6c8bcb05012abc4aa4bc3213fb23780b9b5b1714"
+ dependencies:
+ cheerio "^0.22.0"
+ function.prototype.name "^1.0.0"
+ is-subset "^0.1.1"
+ lodash "^4.17.2"
+ object-is "^1.0.1"
+ object.assign "^4.0.4"
+ object.entries "^1.0.3"
+ object.values "^1.0.3"
+ prop-types "^15.5.4"
+ uuid "^2.0.3"
+
+"errno@>=0.1.1 <0.2.0-0", errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.6.1, es-abstract@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.0"
+ is-callable "^1.1.3"
+ is-regex "^1.0.3"
+
+es-to-primitive@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+ dependencies:
+ is-callable "^1.1.1"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.1"
+
+es3ify@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/es3ify/-/es3ify-0.1.4.tgz#ad9fa5df1ae34f3f31e1211b5818b2d51078dfd1"
+ dependencies:
+ esprima-fb "~3001.0001.0000-dev-harmony-fb"
+ jstransform "~3.0.0"
+ through "~2.3.4"
+
+es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
+ version "0.10.15"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6"
+ dependencies:
+ es6-iterator "2"
+ es6-symbol "~3.1"
+
+es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
+ dependencies:
+ d "1"
+ es5-ext "^0.10.14"
+ es6-symbol "^3.1"
+
+es6-map@^0.1.3:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+ dependencies:
+ 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@~0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-symbol "3.1.1"
+ event-emitter "~0.3.5"
+
+es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+es6-templates@^0.2.2:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4"
+ dependencies:
+ recast "~0.11.12"
+ through "~2.3.6"
+
+es6-weak-map@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+ dependencies:
+ d "1"
+ es5-ext "^0.10.14"
+ es6-iterator "^2.0.1"
+ es6-symbol "^3.1.1"
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+escodegen@^1.6.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+ dependencies:
+ esprima "^2.7.1"
+ estraverse "^1.9.1"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.2.0"
+
+escope@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+ dependencies:
+ es6-map "^0.1.3"
+ es6-weak-map "^2.0.1"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-plugin-react@6.10.0:
+ version "6.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.0.tgz#9c48b48d101554b5355413e7c64238abde6ef1ef"
+ dependencies:
+ 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"
+
+eslint@3.17.1:
+ version "3.17.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.17.1.tgz#b80ae12d9c406d858406fccda627afce33ea10ea"
+ dependencies:
+ babel-code-frame "^6.16.0"
+ chalk "^1.1.3"
+ concat-stream "^1.4.6"
+ debug "^2.1.1"
+ doctrine "^1.2.2"
+ escope "^3.6.0"
+ espree "^3.4.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"
+
+esmangle-evaluator@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz#620d866ef4861b3311f75766d52a8572bb3c6336"
+
+espree@^3.4.0:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.2.tgz#38dbdedbedc95b8961a1fbf04734a8f6a9c8c592"
+ dependencies:
+ acorn "^5.0.1"
+ acorn-jsx "^3.0.0"
+
+esprima-fb@~15001.1001.0-dev-harmony-fb:
+ version "15001.1001.0-dev-harmony-fb"
+ resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659"
+
+esprima-fb@~3001.0001.0000-dev-harmony-fb, esprima-fb@~3001.1.0-dev-harmony-fb:
+ version "3001.1.0-dev-harmony-fb"
+ resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz#b77d37abcd38ea0b77426bb8bc2922ce6b426411"
+
+esprima@^2.6.0, esprima@^2.7.1:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+
+esprima@^3.1.1, esprima@~3.1.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+
+esrecurse@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220"
+ dependencies:
+ estraverse "~4.1.0"
+ object-assign "^4.0.1"
+
+estraverse@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
+
+estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+
+estraverse@~4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
+
+esutils@^2.0.0, esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+etag@~1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
+
+event-emitter@~0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+
+evp_bytestokey@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
+ dependencies:
+ create-hash "^1.1.1"
+
+exec-buffer@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.1.0.tgz#851b46d062fca9bcbc6ff8781693e28e8da80402"
+ dependencies:
+ execa "^0.5.0"
+ p-finally "^1.0.0"
+ pify "^2.3.0"
+ rimraf "^2.5.4"
+ tempfile "^1.0.0"
+
+exec-series@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a"
+ dependencies:
+ async-each-series "^1.1.0"
+ object-assign "^4.1.0"
+
+exec-sh@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10"
+ dependencies:
+ merge "^1.1.3"
+
+execa@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36"
+ dependencies:
+ cross-spawn "^4.0.0"
+ get-stream "^2.2.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+executable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9"
+ dependencies:
+ meow "^3.1.0"
+
+exit-hook@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ dependencies:
+ fill-range "^2.1.0"
+
+expirymanager@0.9.x:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/expirymanager/-/expirymanager-0.9.3.tgz#e5f6b3ba00d8d76cf63311c2b71d7dfc9bde3e4f"
+
+exports-loader@0.6.4:
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886"
+ dependencies:
+ loader-utils "^1.0.2"
+ source-map "0.5.x"
+
+express@^4.13.3:
+ version "4.15.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662"
+ dependencies:
+ accepts "~1.3.3"
+ array-flatten "1.1.1"
+ content-disposition "0.5.2"
+ content-type "~1.0.2"
+ cookie "0.3.1"
+ cookie-signature "1.0.6"
+ debug "2.6.7"
+ depd "~1.1.0"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.8.0"
+ finalhandler "~1.0.3"
+ fresh "0.5.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.1"
+ path-to-regexp "0.1.7"
+ proxy-addr "~1.1.4"
+ qs "6.4.0"
+ range-parser "~1.2.0"
+ send "0.15.3"
+ serve-static "1.12.3"
+ setprototypeof "1.0.3"
+ statuses "~1.3.1"
+ type-is "~1.6.15"
+ utils-merge "1.0.0"
+ vary "~1.1.1"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend@^3.0.0, extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+
+external-editor@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b"
+ dependencies:
+ extend "^3.0.0"
+ spawn-sync "^1.0.15"
+ tmp "^0.0.29"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ dependencies:
+ is-extglob "^1.0.0"
+
+extract-text-webpack-plugin@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159"
+ dependencies:
+ ajv "^4.11.2"
+ async "^2.1.2"
+ loader-utils "^1.0.2"
+ webpack-sources "^0.1.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+
+falafel@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/falafel/-/falafel-1.2.0.tgz#c18d24ef5091174a497f318cd24b026a25cddab4"
+ dependencies:
+ acorn "^1.0.3"
+ foreach "^2.0.5"
+ isarray "0.0.1"
+ object-keys "^1.0.6"
+
+fancy-log@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
+ dependencies:
+ chalk "^1.1.1"
+ time-stamp "^1.0.0"
+
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
+fastclick@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/fastclick/-/fastclick-1.0.6.tgz#161625b27b1a5806405936bda9a2c1926d06be6a"
+
+fastparse@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+
+fb-watchman@^1.8.0:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383"
+ dependencies:
+ bser "1.0.2"
+
+fb-watchman@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
+ dependencies:
+ bser "^2.0.0"
+
+fbemitter@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865"
+ dependencies:
+ fbjs "^0.8.4"
+
+fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.9:
+ version "0.8.12"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
+ dependencies:
+ core-js "^1.0.0"
+ isomorphic-fetch "^2.1.1"
+ loose-envify "^1.0.0"
+ object-assign "^4.1.0"
+ promise "^7.1.1"
+ setimmediate "^1.0.5"
+ ua-parser-js "^0.7.9"
+
+fd-slicer@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+ dependencies:
+ pend "~1.2.0"
+
+figures@^1.3.5:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+ dependencies:
+ escape-string-regexp "^1.0.5"
+ object-assign "^4.1.0"
+
+file-entry-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
+file-loader@0.11.1:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.1.tgz#6b328ee1234a729e4e47d36375dd6d35c0e1db84"
+ dependencies:
+ loader-utils "^1.0.2"
+
+file-type@^3.1.0, file-type@^3.8.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+
+filename-reserved-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4"
+
+filenamify@^1.0.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5"
+ dependencies:
+ filename-reserved-regex "^1.0.0"
+ strip-outer "^1.0.0"
+ trim-repeated "^1.0.0"
+
+fileset@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+ dependencies:
+ glob "^7.0.3"
+ minimatch "^3.0.3"
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+finalhandler@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
+ dependencies:
+ debug "2.6.7"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.1"
+ statuses "~1.3.1"
+ unpipe "~1.0.0"
+
+find-babel-config@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355"
+ dependencies:
+ json5 "^0.5.1"
+ path-exists "^3.0.0"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ dependencies:
+ locate-path "^2.0.0"
+
+find-versions@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62"
+ dependencies:
+ array-uniq "^1.0.0"
+ get-stdin "^4.0.1"
+ meow "^3.5.0"
+ semver-regex "^1.0.0"
+
+first-chunk-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
+
+flat-cache@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
+ dependencies:
+ circular-json "^0.3.1"
+ del "^2.0.2"
+ graceful-fs "^4.1.2"
+ write "^0.2.1"
+
+flatten@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+
+fleximap@0.9.x:
+ version "0.9.10"
+ resolved "https://registry.yarnpkg.com/fleximap/-/fleximap-0.9.10.tgz#1aa50ff6a8fea0037cc378e38ddacc091025ac10"
+
+flux@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/flux/-/flux-3.1.2.tgz#8c170addf95b8cb2febb3ddd640aa3e24505762f"
+ dependencies:
+ fbemitter "^2.0.0"
+ fbjs "^0.8.0"
+
+font-awesome@4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+
+for-in@^0.1.3:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+
+for-in@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
+for-own@^0.1.3, for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ dependencies:
+ for-in "^1.0.1"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
+form-data@^2.1.1, form-data@~2.1.1:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+formidable@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9"
+
+forwarded@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
+
+fresh@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
+
+fs-extra@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+
+fs-extra@^0.26.4:
+ version "0.26.7"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+fsevents@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+function-bind@^1.0.2, function-bind@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
+
+function.prototype.name@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.0.tgz#5f523ca64e491a5f95aba80cc1e391080a14482e"
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.0"
+ is-callable "^1.1.2"
+
+gauge@~2.7.1:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+gaze@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+ dependencies:
+ globule "^1.0.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ dependencies:
+ is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+
+get-params@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe"
+
+get-proxy@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb"
+ dependencies:
+ rc "^1.1.2"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+
+get-stream@^2.2.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
+ dependencies:
+ object-assign "^4.0.1"
+ pinkie-promise "^2.0.0"
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ dependencies:
+ assert-plus "^1.0.0"
+
+getport@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/getport/-/getport-0.1.0.tgz#abddf3d5d1e77dd967ccfa2b036a0a1fb26fd7f7"
+
+gifsicle@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-3.0.4.tgz#f45cb5ed10165b665dc929e0e9328b6c821dfa3b"
+ dependencies:
+ bin-build "^2.0.0"
+ bin-wrapper "^3.0.0"
+ logalot "^2.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-stream@^5.3.2:
+ version "5.3.5"
+ resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22"
+ dependencies:
+ extend "^3.0.0"
+ glob "^5.0.3"
+ glob-parent "^3.0.0"
+ micromatch "^2.3.7"
+ ordered-read-streams "^0.3.0"
+ through2 "^0.6.0"
+ to-absolute-glob "^0.1.1"
+ unique-stream "^2.0.2"
+
+glob@^5.0.3:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ dependencies:
+ 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"
+
+globals@^9.0.0, globals@^9.14.0:
+ version "9.17.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
+
+globby@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globule@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f"
+ dependencies:
+ glob "~7.1.1"
+ lodash "~4.16.4"
+ minimatch "~3.0.2"
+
+glogg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
+ dependencies:
+ sparkles "^1.0.0"
+
+got@^5.0.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
+ dependencies:
+ create-error-class "^3.0.1"
+ duplexer2 "^0.1.4"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ node-status-codes "^1.0.0"
+ object-assign "^4.0.1"
+ parse-json "^2.1.0"
+ pinkie-promise "^2.0.0"
+ read-all-stream "^3.0.0"
+ readable-stream "^2.0.5"
+ timed-out "^3.0.0"
+ unzip-response "^1.0.2"
+ url-parse-lax "^1.0.0"
+
+graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+
+gulp-decompress@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7"
+ dependencies:
+ archive-type "^3.0.0"
+ decompress "^3.0.0"
+ gulp-util "^3.0.1"
+ readable-stream "^2.0.2"
+
+gulp-rename@^1.2.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817"
+
+gulp-sourcemaps@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c"
+ dependencies:
+ convert-source-map "^1.1.1"
+ graceful-fs "^4.1.2"
+ strip-bom "^2.0.0"
+ through2 "^2.0.0"
+ vinyl "^1.0.0"
+
+gulp-util@^3.0.1:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
+ dependencies:
+ array-differ "^1.0.0"
+ array-uniq "^1.0.2"
+ beeper "^1.0.0"
+ chalk "^1.0.0"
+ dateformat "^2.0.0"
+ fancy-log "^1.1.0"
+ gulplog "^1.0.0"
+ has-gulplog "^0.1.0"
+ lodash._reescape "^3.0.0"
+ lodash._reevaluate "^3.0.0"
+ lodash._reinterpolate "^3.0.0"
+ lodash.template "^3.0.0"
+ minimist "^1.1.0"
+ multipipe "^0.1.2"
+ object-assign "^3.0.0"
+ replace-ext "0.0.1"
+ through2 "^2.0.0"
+ vinyl "^0.5.0"
+
+gulplog@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
+ dependencies:
+ glogg "^1.0.0"
+
+handlebars@^4.0.3:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
+ dependencies:
+ async "^1.4.0"
+ optimist "^0.6.1"
+ source-map "^0.4.4"
+ optionalDependencies:
+ uglify-js "^2.6"
+
+har-schema@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
+
+har-validator@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
+ dependencies:
+ ajv "^4.9.1"
+ har-schema "^1.0.5"
+
+harmony-reflect@1.5.1, harmony-reflect@^1.4.6:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.5.1.tgz#b54ca617b00cc8aef559bbb17b3d85431dc7e329"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+
+has-gulplog@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
+ dependencies:
+ sparkles "^1.0.0"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+
+has@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+ dependencies:
+ function-bind "^1.0.2"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
+ dependencies:
+ inherits "^2.0.1"
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+he@1.1.x:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+
+highlight.js@9.11.0:
+ version "9.11.0"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.11.0.tgz#47f98c7399918700db2caf230ded12cec41a84ae"
+
+history@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/history/-/history-2.1.2.tgz#4aa2de897a0e4867e4539843be6ecdb2986bfdec"
+ dependencies:
+ deep-equal "^1.0.0"
+ invariant "^2.0.0"
+ query-string "^3.0.0"
+ warning "^2.0.0"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+
+hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
+
+html-comment-regex@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+
+html-encoding-sniffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da"
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+html-loader@0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.5.tgz#5fbcd87cd63a5c49a7fce2fe56f425e05729c68c"
+ dependencies:
+ es6-templates "^0.2.2"
+ fastparse "^1.1.1"
+ html-minifier "^3.0.1"
+ loader-utils "^1.0.2"
+ object-assign "^4.1.0"
+
+html-minifier@^3.0.1, html-minifier@^3.2.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.3.tgz#eb3a7297c804611f470454eeebe0aacc427e424a"
+ dependencies:
+ camel-case "3.0.x"
+ clean-css "4.0.x"
+ commander "2.9.x"
+ he "1.1.x"
+ ncname "1.0.x"
+ param-case "2.1.x"
+ relateurl "0.2.x"
+ uglify-js "~2.8.22"
+
+html-webpack-plugin@2.28.0:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009"
+ dependencies:
+ bluebird "^3.4.7"
+ html-minifier "^3.2.3"
+ loader-utils "^0.2.16"
+ lodash "^4.17.3"
+ pretty-error "^2.0.2"
+ toposort "^1.0.0"
+
+htmlparser2@^3.9.1:
+ version "3.9.2"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
+ dependencies:
+ domelementtype "^1.3.0"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+
+htmlparser2@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
+ dependencies:
+ domelementtype "1"
+ domhandler "2.1"
+ domutils "1.1"
+ readable-stream "1.0"
+
+http-errors@~1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257"
+ dependencies:
+ depd "1.1.0"
+ inherits "2.0.3"
+ setprototypeof "1.0.3"
+ statuses ">= 1.3.1 < 2"
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+
+iconv-lite@0.4.13:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
+
+iconv-lite@0.4.15, iconv-lite@~0.4.13:
+ version "0.4.15"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
+
+icss-replace-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5"
+
+identity-obj-proxy@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
+ dependencies:
+ harmony-reflect "^1.4.6"
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+
+ignore@^3.2.0:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd"
+
+image-webpack-loader@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/image-webpack-loader/-/image-webpack-loader-3.3.1.tgz#d2d72be024f8975e48c984f2401c0c484897cbd3"
+ dependencies:
+ imagemin "^5.2.2"
+ imagemin-gifsicle "^5.1.0"
+ imagemin-mozjpeg "^6.0.0"
+ imagemin-optipng "^5.2.1"
+ imagemin-pngquant "^5.0.0"
+ imagemin-svgo "^5.2.1"
+ loader-utils "^1.1.0"
+ object-assign "^4.1.1"
+
+imagemin-gifsicle@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.1.0.tgz#2e4ddcda2a109b221cabaec498e1e2dd28ca768f"
+ dependencies:
+ exec-buffer "^3.0.0"
+ gifsicle "^3.0.0"
+ is-gif "^1.0.0"
+
+imagemin-mozjpeg@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-6.0.0.tgz#71a32a457aa1b26117a68eeef2d9b190c2e5091e"
+ dependencies:
+ exec-buffer "^3.0.0"
+ is-jpg "^1.0.0"
+ mozjpeg "^4.0.0"
+
+imagemin-optipng@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz#d22da412c09f5ff00a4339960b98a88b1dbe8695"
+ dependencies:
+ exec-buffer "^3.0.0"
+ is-png "^1.0.0"
+ optipng-bin "^3.0.0"
+
+imagemin-pngquant@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-5.0.0.tgz#7d72405778caba9c510eb3cb4590c8413383560e"
+ dependencies:
+ exec-buffer "^3.0.0"
+ is-png "^1.0.0"
+ pngquant-bin "^3.0.0"
+
+imagemin-svgo@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-5.2.1.tgz#74d593ce4cbe1b87efdb3d06a4a56078f71a8147"
+ dependencies:
+ is-svg "^2.0.0"
+ svgo "^0.7.0"
+
+imagemin@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.2.2.tgz#e14a0f357f8810266875eda38634eeb96f6fbd16"
+ dependencies:
+ file-type "^3.8.0"
+ globby "^5.0.0"
+ mkdirp "^0.5.1"
+ pify "^2.3.0"
+ promise.pipe "^3.0.0"
+ replace-ext "0.0.1"
+
+immediate@~3.0.5:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
+
+imports-loader@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.1.tgz#f204b5f34702a32c1db7d48d89d5e867a0441253"
+ dependencies:
+ loader-utils "^1.0.2"
+ source-map "^0.5.6"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+
+in-publish@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ dependencies:
+ repeating "^2.0.0"
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+
+inline-process-browser@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/inline-process-browser/-/inline-process-browser-1.0.0.tgz#46a61b153dd3c9b1624b1a00626edb4f7f414f22"
+ dependencies:
+ falafel "^1.0.1"
+ through2 "^0.6.5"
+
+inobounce@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/inobounce/-/inobounce-0.1.4.tgz#f0cf964b5a8f39d185e16a49e6c3e950f6b5ea1b"
+
+inquirer@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.1.3.tgz#6cd2a93f709fa50779731fd2262c698155cab2fa"
+ dependencies:
+ ansi-escapes "^1.1.0"
+ chalk "^1.0.0"
+ cli-cursor "^1.0.1"
+ cli-width "^2.0.0"
+ external-editor "^1.0.1"
+ figures "^1.3.5"
+ lodash "^4.3.0"
+ mute-stream "0.0.6"
+ pinkie-promise "^2.0.0"
+ run-async "^2.2.0"
+ rx "^4.1.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.0"
+ through "^2.3.6"
+
+inquirer@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
+ dependencies:
+ 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@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
+
+intl-format-cache@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.0.5.tgz#b484cefcb9353f374f25de389a3ceea1af18d7c9"
+
+intl-messageformat-parser@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz#5906b7f953ab7470e0dc8549097b648b991892ff"
+
+intl-messageformat@1.3.0, intl-messageformat@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-1.3.0.tgz#f7d926aded7a3ab19b2dc601efd54e99a4bd4eae"
+ dependencies:
+ intl-messageformat-parser "1.2.0"
+
+intl-relativeformat@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-1.3.0.tgz#893dc7076fccd380cf091a2300c380fa57ace45b"
+ dependencies:
+ intl-messageformat "1.3.0"
+
+intl@1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde"
+
+invariant@^2.0.0, invariant@^2.1.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+
+ip-regex@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
+
+ipaddr.js@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+
+is-absolute@^0.1.5:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f"
+ dependencies:
+ is-relative "^0.1.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-bzip2@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc"
+
+is-callable@^1.1.1, is-callable@^1.1.2, is-callable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
+is-ci@^1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+ dependencies:
+ ci-info "^1.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-extglob@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+
+is-gif@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-gzip@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
+
+is-jpg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.0.tgz#2959c17e73430db38264da75b90dd54f2d86da1c"
+
+is-my-json-valid@^2.10.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-natural-number@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+
+is-plain-object@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f"
+ dependencies:
+ isobject "^1.0.0"
+
+is-png@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+is-promise@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+
+is-regex@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ dependencies:
+ has "^1.0.1"
+
+is-relative@^0.1.0:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82"
+
+is-resolvable@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
+ dependencies:
+ tryit "^1.0.1"
+
+is-retry-allowed@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
+
+is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
+is-subset@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
+
+is-svg@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
+is-tar@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
+is-url@^1.2.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+
+is-valid-glob@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe"
+
+is-windows@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.0.tgz#c61d61020c3ebe99261b781bd3d1622395f547f8"
+
+is-zip@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325"
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isemail@1.x.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+
+isobject@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a"
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ dependencies:
+ isarray "1.0.0"
+
+isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+ dependencies:
+ node-fetch "^1.0.1"
+ whatwg-fetch ">=0.10.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
+istanbul-api@^1.1.1:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.8.tgz#a844e55c6f9aeee292e7f42942196f60b23dc93e"
+ dependencies:
+ async "^2.1.4"
+ fileset "^2.0.2"
+ istanbul-lib-coverage "^1.1.0"
+ istanbul-lib-hook "^1.0.6"
+ istanbul-lib-instrument "^1.7.1"
+ istanbul-lib-report "^1.1.0"
+ istanbul-lib-source-maps "^1.2.0"
+ istanbul-reports "^1.1.0"
+ js-yaml "^3.7.0"
+ mkdirp "^0.5.1"
+ once "^1.4.0"
+
+istanbul-lib-coverage@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz#87a0c015b6910651cb3b184814dfb339337e25e1"
+
+istanbul-lib-coverage@^1.0.2, istanbul-lib-coverage@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#caca19decaef3525b5d6331d701f3f3b7ad48528"
+
+istanbul-lib-hook@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.6.tgz#c0866d1e81cf2d5319249510131fc16dee49231f"
+ dependencies:
+ append-transform "^0.4.0"
+
+istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.6.2:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.0.tgz#b8e0dc25709bb44e17336ab47b7bb5c97c23f659"
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.13.0"
+ istanbul-lib-coverage "^1.0.2"
+ semver "^5.3.0"
+
+istanbul-lib-instrument@^1.7.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.1.tgz#169e31bc62c778851a99439dd99c3cc12184d360"
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.13.0"
+ istanbul-lib-coverage "^1.1.0"
+ semver "^5.3.0"
+
+istanbul-lib-report@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.0.tgz#444c4ecca9afa93cf584f56b10f195bf768c0770"
+ dependencies:
+ istanbul-lib-coverage "^1.1.0"
+ mkdirp "^0.5.1"
+ path-parse "^1.0.5"
+ supports-color "^3.1.2"
+
+istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.0.tgz#8c7706d497e26feeb6af3e0c28fd5b0669598d0e"
+ dependencies:
+ debug "^2.6.3"
+ istanbul-lib-coverage "^1.1.0"
+ mkdirp "^0.5.1"
+ rimraf "^2.6.1"
+ source-map "^0.5.3"
+
+istanbul-reports@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.0.tgz#1ef3b795889219cfb5fad16365f6ce108d5f8c66"
+ dependencies:
+ handlebars "^4.0.3"
+
+jasny-bootstrap@3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/jasny-bootstrap/-/jasny-bootstrap-3.1.3.tgz#b072a681d50c649762c9543c7a6093d9baa2f87b"
+
+jest-changed-files@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
+
+jest-cli@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.3.tgz#fe88ddbb7a9f3a16d0ed55339a0a2424f7f0d361"
+ dependencies:
+ ansi-escapes "^1.4.0"
+ callsites "^2.0.0"
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ is-ci "^1.0.10"
+ istanbul-api "^1.1.1"
+ istanbul-lib-coverage "^1.0.1"
+ istanbul-lib-instrument "^1.4.2"
+ istanbul-lib-source-maps "^1.1.0"
+ jest-changed-files "^20.0.3"
+ jest-config "^20.0.3"
+ jest-docblock "^20.0.3"
+ jest-environment-jsdom "^20.0.3"
+ jest-haste-map "^20.0.3"
+ jest-jasmine2 "^20.0.3"
+ jest-message-util "^20.0.3"
+ jest-regex-util "^20.0.3"
+ jest-resolve-dependencies "^20.0.3"
+ jest-runtime "^20.0.3"
+ jest-snapshot "^20.0.3"
+ jest-util "^20.0.3"
+ micromatch "^2.3.11"
+ node-notifier "^5.0.2"
+ pify "^2.3.0"
+ slash "^1.0.0"
+ string-length "^1.0.1"
+ throat "^3.0.0"
+ which "^1.2.12"
+ worker-farm "^1.3.1"
+ yargs "^7.0.2"
+
+jest-config@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.3.tgz#a934f27eea764915801cdda26f6f8eec2ac79266"
+ dependencies:
+ chalk "^1.1.3"
+ glob "^7.1.1"
+ jest-environment-jsdom "^20.0.3"
+ jest-environment-node "^20.0.3"
+ jest-jasmine2 "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-regex-util "^20.0.3"
+ jest-resolve "^20.0.3"
+ jest-validate "^20.0.3"
+ pretty-format "^20.0.3"
+
+jest-diff@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617"
+ dependencies:
+ chalk "^1.1.3"
+ diff "^3.2.0"
+ jest-matcher-utils "^20.0.3"
+ pretty-format "^20.0.3"
+
+jest-docblock@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712"
+
+jest-environment-jsdom@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99"
+ dependencies:
+ jest-mock "^20.0.3"
+ jest-util "^20.0.3"
+ jsdom "^9.12.0"
+
+jest-environment-node@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403"
+ dependencies:
+ jest-mock "^20.0.3"
+ jest-util "^20.0.3"
+
+jest-haste-map@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.3.tgz#6377d537eaf34eb5f75121a691cae3fde82ba971"
+ dependencies:
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.1.11"
+ jest-docblock "^20.0.3"
+ micromatch "^2.3.11"
+ sane "~1.6.0"
+ worker-farm "^1.3.1"
+
+jest-jasmine2@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.3.tgz#18c4e9d029da7ed1ae727c55300064d1a0542974"
+ dependencies:
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-matchers "^20.0.3"
+ jest-message-util "^20.0.3"
+ jest-snapshot "^20.0.3"
+ once "^1.4.0"
+ p-map "^1.1.1"
+
+jest-matcher-utils@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612"
+ dependencies:
+ chalk "^1.1.3"
+ pretty-format "^20.0.3"
+
+jest-matchers@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60"
+ dependencies:
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-message-util "^20.0.3"
+ jest-regex-util "^20.0.3"
+
+jest-message-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c"
+ dependencies:
+ chalk "^1.1.3"
+ micromatch "^2.3.11"
+ slash "^1.0.0"
+
+jest-mock@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59"
+
+jest-regex-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762"
+
+jest-resolve-dependencies@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a"
+ dependencies:
+ jest-regex-util "^20.0.3"
+
+jest-resolve@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.3.tgz#375307aa40f78532d40ff8b17d5300b1519f8dd4"
+ dependencies:
+ browser-resolve "^1.11.2"
+ is-builtin-module "^1.0.0"
+ resolve "^1.3.2"
+
+jest-runtime@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.3.tgz#dddd22bbc429e26e6a96d1acd46ca55714b09252"
+ dependencies:
+ babel-core "^6.0.0"
+ babel-jest "^20.0.3"
+ babel-plugin-istanbul "^4.0.0"
+ chalk "^1.1.3"
+ convert-source-map "^1.4.0"
+ graceful-fs "^4.1.11"
+ jest-config "^20.0.3"
+ jest-haste-map "^20.0.3"
+ jest-regex-util "^20.0.3"
+ jest-resolve "^20.0.3"
+ jest-util "^20.0.3"
+ json-stable-stringify "^1.0.1"
+ micromatch "^2.3.11"
+ strip-bom "3.0.0"
+ yargs "^7.0.2"
+
+jest-snapshot@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566"
+ dependencies:
+ chalk "^1.1.3"
+ jest-diff "^20.0.3"
+ jest-matcher-utils "^20.0.3"
+ jest-util "^20.0.3"
+ natural-compare "^1.4.0"
+ pretty-format "^20.0.3"
+
+jest-util@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad"
+ dependencies:
+ chalk "^1.1.3"
+ graceful-fs "^4.1.11"
+ jest-message-util "^20.0.3"
+ jest-mock "^20.0.3"
+ jest-validate "^20.0.3"
+ leven "^2.1.0"
+ mkdirp "^0.5.1"
+
+jest-validate@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab"
+ dependencies:
+ chalk "^1.1.3"
+ jest-matcher-utils "^20.0.3"
+ leven "^2.1.0"
+ pretty-format "^20.0.3"
+
+jest@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.3.tgz#e4fd054c4f1170a116a00761da4cfdb73f1cdc33"
+ dependencies:
+ jest-cli "^20.0.3"
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ dependencies:
+ jsbn "~0.1.0"
+
+joi@^6.10.1:
+ version "6.10.1"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06"
+ dependencies:
+ hoek "2.x.x"
+ isemail "1.x.x"
+ moment "2.x.x"
+ topo "1.x.x"
+
+jquery-deferred@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/jquery-deferred/-/jquery-deferred-0.3.1.tgz#596eca1caaff54f61b110962b23cafea74c35355"
+
+jquery@>=1.10, jquery@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
+
+js-base64@^2.1.9:
+ version "2.1.9"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
+
+js-data@^2.9.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/js-data/-/js-data-2.10.0.tgz#8ddaa1b5e5b81384b29bc4d949bc8cc09be16d84"
+
+js-tokens@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+
+js-yaml@^3.5.1, js-yaml@^3.7.0:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^3.1.1"
+
+js-yaml@~3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^2.6.0"
+
+jsan@^3.1.0, jsan@^3.1.5:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.9.tgz#2705676c1058f0a7d9ac266ad036a5769cfa7c96"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+
+jsdom-global@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/jsdom-global/-/jsdom-global-3.0.2.tgz#6bd299c13b0c4626b2da2c0393cd4385d606acb9"
+
+jsdom@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-10.1.0.tgz#7765e00fd5c3567f34985a1c86ff466a61dacc6a"
+ dependencies:
+ abab "^1.0.3"
+ acorn "^4.0.4"
+ acorn-globals "^3.1.0"
+ array-equal "^1.0.0"
+ content-type-parser "^1.0.1"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle ">= 0.2.37 < 0.3.0"
+ escodegen "^1.6.1"
+ html-encoding-sniffer "^1.0.1"
+ nwmatcher ">= 1.3.9 < 2.0.0"
+ parse5 "^1.5.1"
+ pn "^1.0.0"
+ request "^2.79.0"
+ request-promise-native "^1.0.3"
+ sax "^1.2.1"
+ symbol-tree "^3.2.1"
+ tough-cookie "^2.3.2"
+ webidl-conversions "^4.0.0"
+ whatwg-encoding "^1.0.1"
+ whatwg-url "^4.3.0"
+ xml-name-validator "^2.0.1"
+
+jsdom@^9.12.0:
+ version "9.12.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
+ dependencies:
+ abab "^1.0.3"
+ acorn "^4.0.4"
+ acorn-globals "^3.1.0"
+ array-equal "^1.0.0"
+ content-type-parser "^1.0.1"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle ">= 0.2.37 < 0.3.0"
+ escodegen "^1.6.1"
+ html-encoding-sniffer "^1.0.1"
+ nwmatcher ">= 1.3.9 < 2.0.0"
+ parse5 "^1.5.1"
+ request "^2.79.0"
+ sax "^1.2.1"
+ symbol-tree "^3.2.1"
+ tough-cookie "^2.3.2"
+ webidl-conversions "^4.0.0"
+ whatwg-encoding "^1.0.1"
+ whatwg-url "^4.3.0"
+ xml-name-validator "^2.0.1"
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
+json-loader@0.5.4, json-loader@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
+json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
+json5@^0.5.0, json5@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+
+jsonwebtoken@7.2.1:
+ version "7.2.1"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.2.1.tgz#0fc7217473fc02b4c9aa1e188aa70b51bba4fccb"
+ dependencies:
+ joi "^6.10.1"
+ jws "^3.1.4"
+ lodash.once "^4.0.0"
+ ms "^0.7.1"
+ xtend "^4.0.1"
+
+jsprim@^1.2.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+jstransform@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-3.0.0.tgz#a2591ab6cee8d97bf3be830dbfa2313b87cd640b"
+ dependencies:
+ base62 "0.1.1"
+ esprima-fb "~3001.1.0-dev-harmony-fb"
+ source-map "0.1.31"
+
+jsx-ast-utils@^1.3.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
+
+jwa@^1.1.4:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5"
+ dependencies:
+ base64url "2.0.0"
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.9"
+ safe-buffer "^5.0.1"
+
+jws@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2"
+ dependencies:
+ base64url "^2.0.0"
+ jwa "^1.1.4"
+ safe-buffer "^5.0.1"
+
+keycode@^2.1.2:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.8.tgz#94d2b7098215eff0e8f9a8931d5a59076c4532fb"
+
+kind-of@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
+ dependencies:
+ is-buffer "^1.0.2"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ dependencies:
+ is-buffer "^1.0.2"
+
+klaw@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+ optionalDependencies:
+ graceful-fs "^4.1.9"
+
+lazy-cache@^0.2.3:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+
+lazy-req@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
+
+lazystream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
+ dependencies:
+ readable-stream "^2.0.5"
+
+lcid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+ dependencies:
+ invert-kv "^1.0.0"
+
+leven@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+lie@3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/lie/-/lie-3.0.2.tgz#ffda21d7bba26f377cad865d3649b2fc8ce39fea"
+ dependencies:
+ es3ify "^0.1.3"
+ immediate "~3.0.5"
+ inline-process-browser "^1.0.0"
+ unreachable-branch-transform "^0.3.0"
+
+linked-list@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-runner@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
+
+loader-utils@^0.2.15, loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+
+localforage@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.5.0.tgz#6b994e19b56611fa85df3992df397ac4ab66e815"
+ dependencies:
+ lie "3.0.2"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+lodash-es@^4.17.4, lodash-es@^4.2.0, lodash-es@^4.2.1:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
+
+lodash._basecopy@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+
+lodash._basetostring@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
+
+lodash._basevalues@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
+
+lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+
+lodash._isiterateecall@^3.0.0:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+
+lodash._reescape@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
+
+lodash._reevaluate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+
+lodash._root@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
+
+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
+
+lodash.assignin@^4.0.9:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
+
+lodash.bind@^4.1.4:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+
+lodash.clonedeep@4.5.0, lodash.clonedeep@^4.3.2:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+
+lodash.defaults@^4.0.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+
+lodash.escape@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
+ dependencies:
+ lodash._root "^3.0.0"
+
+lodash.filter@^4.4.0, lodash.filter@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
+
+lodash.flatten@^4.2.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+
+lodash.foreach@^4.3.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
+
+lodash.get@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+
+lodash.isarguments@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+
+lodash.isarray@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+
+lodash.isequal@^4.0.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+
+lodash.isnil@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c"
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+
+lodash.keys@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+ dependencies:
+ lodash._getnative "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+
+lodash.map@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+
+lodash.merge@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
+
+lodash.mergewith@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
+
+lodash.omitby@^4.5.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791"
+
+lodash.once@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+
+lodash.pick@^4.2.1:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+
+lodash.pickby@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff"
+
+lodash.range@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d"
+
+lodash.reduce@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
+
+lodash.reject@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
+
+lodash.restparam@^3.0.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+
+lodash.set@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
+
+lodash.some@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+
+lodash.tail@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+
+lodash.template@^3.0.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash._basetostring "^3.0.0"
+ lodash._basevalues "^3.0.0"
+ lodash._isiterateecall "^3.0.0"
+ lodash._reinterpolate "^3.0.0"
+ lodash.escape "^3.0.0"
+ lodash.keys "^3.0.0"
+ lodash.restparam "^3.0.0"
+ lodash.templatesettings "^3.0.0"
+
+lodash.templatesettings@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.escape "^3.0.0"
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+
+lodash.unset@^4.5.2:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed"
+
+lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+
+lodash@~4.16.4:
+ version "4.16.6"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777"
+
+logalot@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552"
+ dependencies:
+ figures "^1.3.5"
+ squeak "^1.0.0"
+
+longest@^1.0.0, longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ dependencies:
+ js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+
+lowercase-keys@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
+
+lpad-align@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.0.tgz#27fa786bcb695fc434ea1500723eb8d0bdc82bf4"
+ dependencies:
+ get-stdin "^4.0.1"
+ longest "^1.0.0"
+ lpad "^2.0.1"
+ meow "^3.3.0"
+
+lpad@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/lpad/-/lpad-2.0.1.tgz#28316b4e7b2015f511f6591459afc0e5944008ad"
+
+lru-cache@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
+ dependencies:
+ pseudomap "^1.0.1"
+ yallist "^2.0.0"
+
+macaddress@^0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ dependencies:
+ tmpl "1.0.x"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+
+marked@mattermost/marked#8f5902fff9bad793cd6c66e0c44002c9e79e1317:
+ version "0.3.5"
+ resolved "https://codeload.github.com/mattermost/marked/tar.gz/8f5902fff9bad793cd6c66e0c44002c9e79e1317"
+
+match-at@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.0.tgz#f561e7709ff9a105b85cc62c6b8ee7c15bf24f31"
+
+math-expression-evaluator@^1.2.14:
+ version "1.2.16"
+ resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9"
+
+mattermost-redux@mattermost/mattermost-redux#webapp-master:
+ version "0.0.1"
+ resolved "https://codeload.github.com/mattermost/mattermost-redux/tar.gz/e7e9b9ef52b72547174bfae1d0c5b31dddbbbca7"
+ dependencies:
+ deep-equal "1.0.1"
+ harmony-reflect "1.5.1"
+ isomorphic-fetch "2.2.1"
+ mime-db "1.27.0"
+ redux "3.6.0"
+ redux-action-buffer "1.0.1"
+ redux-batched-actions "0.2.0"
+ redux-offline "git+https://github.com/enahum/redux-offline.git"
+ redux-persist "4.6.0"
+ redux-thunk "2.2.0"
+ reselect "3.0.0"
+ serialize-error "2.1.0"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ dependencies:
+ 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"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
+merge-stream@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
+ dependencies:
+ readable-stream "^2.0.1"
+
+merge@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+
+methods@^1.1.1, methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.27.0, mime-db@~1.27.0:
+ version "1.27.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
+
+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
+ version "2.1.15"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
+ dependencies:
+ mime-db "~1.27.0"
+
+mime@1.3.4, mime@1.3.x, mime@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8, minimist@~0.0.1:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+
+minimist@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.0.tgz#cdf225e8898f840a258ded44fc91776770afdc93"
+
+minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+
+mixin-object@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+ dependencies:
+ for-in "^0.1.3"
+ is-extendable "^0.1.1"
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ dependencies:
+ minimist "0.0.8"
+
+moment@2.x.x, moment@^2.10.6:
+ version "2.18.1"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
+
+mozjpeg@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-4.1.1.tgz#859030b24f689a53db9b40f0160d89195b88fd50"
+ dependencies:
+ bin-build "^2.0.0"
+ bin-wrapper "^3.0.0"
+ logalot "^2.0.0"
+
+ms@0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
+
+ms@0.7.3, ms@^0.7.1:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+
+multipipe@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
+ dependencies:
+ duplexer2 "0.0.2"
+
+mute-stream@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
+
+mute-stream@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db"
+
+nan@^2.3.0, nan@^2.3.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+
+ncname@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
+ dependencies:
+ xml-char-classes "^1.0.0"
+
+ncom@0.11.x:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/ncom/-/ncom-0.11.1.tgz#e41f98a13c486d353f11e967217657cecc81329b"
+ dependencies:
+ sc-domain "1.x.x"
+ sc-formatter "3.0.x"
+
+negotiator@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+
+no-case@^2.2.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081"
+ dependencies:
+ lower-case "^1.1.1"
+
+node-dir@^0.1.10:
+ version "0.1.16"
+ resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4"
+ dependencies:
+ minimatch "^3.0.2"
+
+node-ensure@^0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7"
+
+node-fetch@^1.0.1:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
+node-gyp@^3.3.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.0.tgz#7474f63a3a0501161dda0b6341f022f14c423fa6"
+ dependencies:
+ fstream "^1.0.0"
+ glob "^7.0.3"
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.0"
+ nopt "2 || 3"
+ npmlog "0 || 1 || 2 || 3 || 4"
+ osenv "0"
+ request "2"
+ rimraf "2"
+ semver "~5.3.0"
+ tar "^2.0.0"
+ which "1"
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+
+node-libs-browser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "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"
+
+node-notifier@^5.0.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"
+ dependencies:
+ growly "^1.3.0"
+ semver "^5.3.0"
+ shellwords "^0.1.0"
+ which "^1.2.12"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.34"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7"
+ dependencies:
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.0.2"
+ rc "^1.1.7"
+ request "^2.81.0"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^2.2.1"
+ tar-pack "^3.4.0"
+
+node-sass@^4.5.3:
+ version "4.5.3"
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568"
+ dependencies:
+ async-foreach "^0.1.3"
+ chalk "^1.1.1"
+ cross-spawn "^3.0.0"
+ gaze "^1.0.0"
+ get-stdin "^4.0.1"
+ glob "^7.0.3"
+ in-publish "^2.0.0"
+ lodash.assign "^4.2.0"
+ lodash.clonedeep "^4.3.2"
+ lodash.mergewith "^4.6.0"
+ meow "^3.7.0"
+ mkdirp "^0.5.1"
+ nan "^2.3.2"
+ node-gyp "^3.3.1"
+ npmlog "^4.0.0"
+ request "^2.79.0"
+ sass-graph "^2.1.1"
+ stdout-stream "^1.4.0"
+
+node-status-codes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
+
+node-uuid@^1.4.0:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
+
+"nopt@2 || 3":
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ dependencies:
+ abbrev "1"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb"
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+
+normalize-url@^1.4.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ dependencies:
+ path-key "^2.0.0"
+
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+ dependencies:
+ boolbase "~1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+
+"nwmatcher@>= 1.3.9 < 2.0.0":
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a"
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+
+object-assign@4.1.1, object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+
+object-assign@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
+
+object-assign@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
+
+object-is@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
+
+object-keys@^1.0.10, object-keys@^1.0.6, object-keys@^1.0.8:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+
+object-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/object-values/-/object-values-1.0.0.tgz#72af839630119e5b98c3b02bb8c27e3237158105"
+
+object.assign@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.0"
+ object-keys "^1.0.10"
+
+object.entries@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.6.1"
+ function-bind "^1.1.0"
+ has "^1.0.1"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.values@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.6.1"
+ function-bind "^1.1.0"
+ has "^1.0.1"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.3, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ dependencies:
+ wrappy "1"
+
+once@~1.3.0:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ dependencies:
+ wrappy "1"
+
+onetime@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+
+optimist@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+optionator@^0.8.1, optionator@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+options@>=0.0.5:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
+
+optipng-bin@^3.0.0:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-3.1.4.tgz#95d34f2c488704f6fd70606bfea0c659f1d95d84"
+ dependencies:
+ bin-build "^2.0.0"
+ bin-wrapper "^3.0.0"
+ logalot "^2.0.0"
+
+ordered-read-streams@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b"
+ dependencies:
+ is-stream "^1.0.1"
+ readable-stream "^2.0.1"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+
+os-filter-obj@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad"
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+
+os-locale@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+ dependencies:
+ lcid "^1.0.0"
+
+os-shim@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
+
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+
+osenv@0, osenv@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
+p-limit@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ dependencies:
+ p-limit "^1.1.0"
+
+p-map@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+
+param-case@2.1.x:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+ dependencies:
+ no-case "^2.2.0"
+
+parse-asn1@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.1.0, parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ dependencies:
+ error-ex "^1.2.0"
+
+parse5@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
+
+parseurl@~1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-is-inside@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
+path-parse@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
+ dependencies:
+ create-hmac "^1.1.2"
+
+pdfjs-dist@^1.8.361:
+ version "1.8.361"
+ resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-1.8.361.tgz#d82f5ba8a386096510b01882ae332ee0cdec6b1b"
+ dependencies:
+ node-ensure "^0.0.0"
+ worker-loader "^0.8.0"
+
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+
+perfect-scrollbar@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-0.7.0.tgz#85280682cb61ee90f8c0786c9ca5b704471ece1a"
+
+performance-now@^0.2.0, performance-now@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
+
+pify@^2.0.0, pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+ dependencies:
+ find-up "^1.0.0"
+
+pluralize@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
+
+pn@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
+
+pngquant-bin@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-3.1.1.tgz#d124d98a75a9487f40c1640b4dbfcbb2bd5a1fd1"
+ dependencies:
+ bin-build "^2.0.0"
+ bin-wrapper "^3.0.0"
+ logalot "^2.0.0"
+
+postcss-calc@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+ dependencies:
+ postcss "^5.0.2"
+ postcss-message-helpers "^2.0.0"
+ reduce-css-calc "^1.2.6"
+
+postcss-colormin@^2.1.8:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+ dependencies:
+ colormin "^1.0.5"
+ postcss "^5.0.13"
+ postcss-value-parser "^3.2.3"
+
+postcss-convert-values@^2.3.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+ dependencies:
+ postcss "^5.0.11"
+ postcss-value-parser "^3.1.2"
+
+postcss-discard-comments@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-duplicates@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-discard-empty@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-overridden@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+ dependencies:
+ postcss "^5.0.16"
+
+postcss-discard-unused@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+ dependencies:
+ postcss "^5.0.14"
+ uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+ dependencies:
+ postcss "^5.0.4"
+ uniqid "^4.0.0"
+
+postcss-merge-idents@^2.1.5:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.10"
+ postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-merge-rules@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+ dependencies:
+ browserslist "^1.5.2"
+ caniuse-api "^1.5.2"
+ postcss "^5.0.4"
+ postcss-selector-parser "^2.2.2"
+ vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+
+postcss-minify-font-values@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-minify-gradients@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+ dependencies:
+ postcss "^5.0.12"
+ postcss-value-parser "^3.3.0"
+
+postcss-minify-params@^1.0.4:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.2"
+ postcss-value-parser "^3.0.2"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+ dependencies:
+ alphanum-sort "^1.0.2"
+ has "^1.0.1"
+ postcss "^5.0.14"
+ postcss-selector-parser "^2.0.0"
+
+postcss-modules-extract-imports@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-modules-local-by-default@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce"
+ dependencies:
+ css-selector-tokenizer "^0.6.0"
+ postcss "^5.0.4"
+
+postcss-modules-scope@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29"
+ dependencies:
+ css-selector-tokenizer "^0.6.0"
+ postcss "^5.0.4"
+
+postcss-modules-values@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1"
+ dependencies:
+ icss-replace-symbols "^1.0.2"
+ postcss "^5.0.14"
+
+postcss-normalize-charset@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+ dependencies:
+ postcss "^5.0.5"
+
+postcss-normalize-url@^3.0.7:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^1.4.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+
+postcss-ordered-values@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.1"
+
+postcss-reduce-idents@^2.2.2:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-reduce-transforms@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.8"
+ postcss-value-parser "^3.0.1"
+
+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+ dependencies:
+ is-svg "^2.0.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+ svgo "^0.7.0"
+
+postcss-unique-selectors@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+
+postcss-zindex@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
+ version "5.2.17"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+prefix-style@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
+prepend-http@^1.0.0, prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+pretty-error@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8"
+ dependencies:
+ renderkid "^2.0.1"
+ utila "~0.4"
+
+pretty-format@^20.0.3:
+ version "20.0.3"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14"
+ dependencies:
+ ansi-regex "^2.1.1"
+ ansi-styles "^3.0.0"
+
+private@^0.1.6, private@~0.1.5:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+
+process@^0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+
+progress@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+
+promise.pipe@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/promise.pipe/-/promise.pipe-3.0.0.tgz#b8f729867f54353996e6d8e86f3bbd56882e32a6"
+
+promise@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
+ dependencies:
+ asap "~2.0.3"
+
+prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7:
+ version "15.5.10"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.3.1"
+
+proxy-addr@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3"
+ dependencies:
+ forwarded "~0.1.0"
+ ipaddr.js "1.3.0"
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+
+pseudomap@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+
+q@^1.1.2:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
+
+qs@6.4.0, qs@^6.1.0, qs@~6.4.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+
+query-string@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-3.0.3.tgz#ae2e14b4d05071d4e9b9eb4873c35b0dcd42e638"
+ dependencies:
+ strict-uri-encode "^1.0.0"
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+
+querystring@0.2.0, querystring@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+
+raf@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.3.0.tgz#93845eeffc773f8129039f677f80a36044eee2c3"
+ dependencies:
+ performance-now "~0.2.0"
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+randombytes@^2.0.0, randombytes@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
+
+range-parser@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+
+raw-body@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96"
+ dependencies:
+ bytes "2.4.0"
+ iconv-lite "0.4.15"
+ unpipe "1.0.0"
+
+raw-loader@0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
+
+rc@^1.1.2, rc@^1.1.7:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-addons-pure-render-mixin@15.5.2:
+ version "15.5.2"
+ resolved "https://registry.yarnpkg.com/react-addons-pure-render-mixin/-/react-addons-pure-render-mixin-15.5.2.tgz#ebb846aeb2fd771336c232822923108f87d5bff2"
+ dependencies:
+ fbjs "^0.8.4"
+ object-assign "^4.1.0"
+
+react-addons-test-utils@15.5.1:
+ version "15.5.1"
+ resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7"
+ dependencies:
+ fbjs "^0.8.4"
+ object-assign "^4.1.0"
+
+react-bootstrap@^0.31.0:
+ version "0.31.0"
+ resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.31.0.tgz#bbca804c0404d9c640102b2b656ae4cd5bea35c8"
+ dependencies:
+ babel-runtime "^6.11.6"
+ classnames "^2.2.5"
+ dom-helpers "^3.2.0"
+ invariant "^2.2.1"
+ keycode "^2.1.2"
+ prop-types "^15.5.6"
+ react-overlays "^0.7.0"
+ react-prop-types "^0.4.0"
+ uncontrollable "^4.1.0"
+ warning "^3.0.0"
+
+react-custom-scrollbars@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/react-custom-scrollbars/-/react-custom-scrollbars-4.1.2.tgz#0e60c4a46c4a61f9e4994a7663e2b9cbbc5187a3"
+ dependencies:
+ dom-css "^2.0.0"
+ prop-types "^15.5.10"
+ raf "^3.1.0"
+
+react-dom@15.5.4:
+ version "15.5.4"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da"
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.0"
+ prop-types "~15.5.7"
+
+react-input-autosize@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-1.1.4.tgz#cbc45072d4084ddc57806db8e3b34e644b8366ac"
+ dependencies:
+ create-react-class "^15.5.2"
+ prop-types "^15.5.8"
+
+react-intl@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.3.0.tgz#e1df6af5667fdf01cbe4aab20e137251e2ae5142"
+ dependencies:
+ intl-format-cache "^2.0.5"
+ intl-messageformat "^1.3.0"
+ intl-relativeformat "^1.3.0"
+ invariant "^2.1.1"
+
+react-outside-event@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/react-outside-event/-/react-outside-event-1.2.5.tgz#7fe240155b3ead74886ba84597b29cd9855a1427"
+
+react-overlays@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.7.0.tgz#531898ff566c7e5c7226ead2863b8cf9fbb5a981"
+ dependencies:
+ classnames "^2.2.5"
+ dom-helpers "^3.2.0"
+ prop-types "^15.5.8"
+ react-prop-types "^0.4.0"
+ warning "^3.0.0"
+
+react-prop-types@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/react-prop-types/-/react-prop-types-0.4.0.tgz#f99b0bfb4006929c9af2051e7c1414a5c75b93d0"
+ dependencies:
+ warning "^3.0.0"
+
+react-redux@5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.4.tgz#1563babadcfb2672f57f9ceaa439fb16bf85d55b"
+ dependencies:
+ create-react-class "^15.5.1"
+ hoist-non-react-statics "^1.0.3"
+ invariant "^2.0.0"
+ lodash "^4.2.0"
+ lodash-es "^4.2.0"
+ loose-envify "^1.1.0"
+ prop-types "^15.0.0"
+
+react-router@2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-2.8.1.tgz#73e9491f6ceb316d0f779829081863e378ee4ed7"
+ dependencies:
+ history "^2.1.2"
+ hoist-non-react-statics "^1.2.0"
+ invariant "^2.2.1"
+ loose-envify "^1.2.0"
+ warning "^3.0.0"
+
+react-select@^1.0.0-rc.4:
+ version "1.0.0-rc.4"
+ resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.0.0-rc.4.tgz#f28f3bab18196ff8f32337bb52ed015773c90663"
+ dependencies:
+ classnames "^2.2.4"
+ create-react-class "^15.5.2"
+ prop-types "^15.5.8"
+ react-input-autosize "^1.1.3"
+
+react@15.5.4:
+ version "15.5.4"
+ resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047"
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.0"
+ prop-types "^15.5.7"
+
+read-all-stream@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
+ dependencies:
+ pinkie-promise "^2.0.0"
+ readable-stream "^2.0.0"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0":
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
+ version "2.2.9"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
+ dependencies:
+ buffer-shims "~1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~1.0.0"
+ util-deprecate "~1.0.1"
+
+readable-stream@~1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+readline2@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ mute-stream "0.0.5"
+
+recast@^0.10.1:
+ version "0.10.43"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.43.tgz#b95d50f6d60761a5f6252e15d80678168491ce7f"
+ dependencies:
+ ast-types "0.8.15"
+ esprima-fb "~15001.1001.0-dev-harmony-fb"
+ private "~0.1.5"
+ source-map "~0.5.0"
+
+recast@~0.11.12:
+ version "0.11.23"
+ resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
+ dependencies:
+ ast-types "0.9.6"
+ esprima "~3.1.0"
+ private "~0.1.5"
+ source-map "~0.5.0"
+
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ dependencies:
+ resolve "^1.1.6"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+reduce-css-calc@^1.2.6:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+ dependencies:
+ balanced-match "^0.4.2"
+ math-expression-evaluator "^1.2.14"
+ reduce-function-call "^1.0.1"
+
+reduce-function-call@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
+ dependencies:
+ balanced-match "^0.4.2"
+
+redux-action-buffer@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/redux-action-buffer/-/redux-action-buffer-1.0.1.tgz#4563f47e7c921c83cd0e8fefc713d3bba59e47b4"
+
+redux-batched-actions@0.2.0, redux-batched-actions@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/redux-batched-actions/-/redux-batched-actions-0.2.0.tgz#da0000c882b0e6c861a96d5823bd36adf5d9c0dd"
+
+redux-devtools-instrument@^1.3.3:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.8.2.tgz#5e91cfe402e790dae3fd2f0d235f7b7d84b09ffe"
+ dependencies:
+ lodash "^4.2.0"
+ symbol-observable "^1.0.2"
+
+"redux-offline@git+https://github.com/enahum/redux-offline.git":
+ version "1.1.4"
+ resolved "git+https://github.com/enahum/redux-offline.git#454d32a14ae50b9727bccbcdd295cad3cd037335"
+ dependencies:
+ redux-persist "^4.5.0"
+
+redux-persist-transform-filter@0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/redux-persist-transform-filter/-/redux-persist-transform-filter-0.0.9.tgz#aa2e46f7d51fcfa5c005f754f5d934b5d57b0aca"
+ dependencies:
+ lodash.get "^4.4.2"
+ lodash.set "^4.3.2"
+ lodash.unset "^4.5.2"
+
+redux-persist@4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-4.6.0.tgz#3994793d5f2f38bf02591c9e693e16bf8eae2728"
+ dependencies:
+ json-stringify-safe "^5.0.1"
+ lodash "^4.17.4"
+ lodash-es "^4.17.4"
+
+redux-persist@^4.5.0, redux-persist@^4.8.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-4.8.0.tgz#17fd998949bdeef9275e4cf60ad5bbe1c73675fc"
+ dependencies:
+ json-stringify-safe "^5.0.1"
+ lodash "^4.17.4"
+ lodash-es "^4.17.4"
+
+redux-thunk@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5"
+
+redux@3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d"
+ dependencies:
+ lodash "^4.2.1"
+ lodash-es "^4.2.1"
+ loose-envify "^1.1.0"
+ symbol-observable "^1.0.2"
+
+regenerate@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e"
+
+regenerator-transform@0.9.11:
+ version "0.9.11"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
+ dependencies:
+ babel-runtime "^6.18.0"
+ babel-types "^6.19.0"
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+regexpu-core@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regexpu-core@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ dependencies:
+ jsesc "~0.5.0"
+
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+
+remote-redux-devtools-on-debugger@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/remote-redux-devtools-on-debugger/-/remote-redux-devtools-on-debugger-0.7.1.tgz#47f773c1c8823585bc65d7f19ede598337d29189"
+ dependencies:
+ chalk "^1.1.1"
+ minimist "^1.2.0"
+ remotedev-server "^0.2.2"
+
+remote-redux-devtools@^0.5.10:
+ version "0.5.10"
+ resolved "https://registry.yarnpkg.com/remote-redux-devtools/-/remote-redux-devtools-0.5.10.tgz#16897a2de7e260c59a5491133659cd2b45c38a56"
+ dependencies:
+ jsan "^3.1.5"
+ querystring "^0.2.0"
+ redux-devtools-instrument "^1.3.3"
+ remotedev-utils "^0.1.1"
+ rn-host-detect "^1.0.1"
+ socketcluster-client "^5.3.1"
+
+remotedev-serialize@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.0.tgz#074768e98cb7aa806f45994eeb0c8af95120ee32"
+ dependencies:
+ jsan "^3.1.0"
+
+remotedev-server@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/remotedev-server/-/remotedev-server-0.2.2.tgz#92494ef0e558389e12e2a8f0007ce92fc5279799"
+ dependencies:
+ body-parser "^1.15.0"
+ chalk "^1.1.3"
+ cors "^2.7.1"
+ ejs "^2.4.1"
+ express "^4.13.3"
+ getport "^0.1.0"
+ js-data "^2.9.0"
+ lodash "^4.15.0"
+ minimist "^1.2.0"
+ node-uuid "^1.4.0"
+ object-assign "^4.0.0"
+ repeat-string "^1.5.4"
+ semver "^5.3.0"
+ socketcluster "^5.0.4"
+
+remotedev-utils@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/remotedev-utils/-/remotedev-utils-0.1.3.tgz#6e3f6611d0f58cecb100fc506dd1009af53dc955"
+ dependencies:
+ get-params "^0.1.2"
+ jsan "^3.1.5"
+ lodash "^4.0.0"
+ remotedev-serialize "^0.1.0"
+ shortid "^2.2.6"
+
+remove-trailing-separator@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
+
+renderkid@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319"
+ dependencies:
+ css-select "^1.1.0"
+ dom-converter "~0.1"
+ htmlparser2 "~3.3.0"
+ strip-ansi "^3.0.0"
+ utila "~0.3"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+
+repeat-string@^1.5.2, repeat-string@^1.5.4:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ dependencies:
+ is-finite "^1.0.0"
+
+replace-ext@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
+
+request-promise-core@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
+ dependencies:
+ lodash "^4.13.1"
+
+request-promise-native@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.3.tgz#9cb2b2f69f137e4acf35116a08a441cbfd0c0134"
+ dependencies:
+ request-promise-core "1.1.1"
+ stealthy-require "^1.0.0"
+
+request@2, request@^2.79.0, request@^2.81.0:
+ version "2.81.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.12.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~4.2.1"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ performance-now "^0.2.0"
+ qs "~6.4.0"
+ safe-buffer "^5.0.1"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.0.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+
+require-uncached@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+ dependencies:
+ caller-path "^0.1.0"
+ resolve-from "^1.0.0"
+
+reselect@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.0.tgz#b2e35977f03048700028eaee3a8c0639e40e8f35"
+
+resolve-from@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+
+resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
+ dependencies:
+ path-parse "^1.0.5"
+
+restore-cursor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+ dependencies:
+ exit-hook "^1.0.0"
+ onetime "^1.0.0"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
+
+rn-host-detect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.3.tgz#242d76e2fa485c48d751416e65b7cce596969e91"
+
+run-async@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
+ dependencies:
+ once "^1.3.0"
+
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ dependencies:
+ is-promise "^2.1.0"
+
+rx-lite@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
+
+rx@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
+
+safe-buffer@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
+
+sane@~1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775"
+ dependencies:
+ anymatch "^1.3.0"
+ exec-sh "^0.2.0"
+ fb-watchman "^1.8.0"
+ minimatch "^3.0.2"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+ watch "~0.10.0"
+
+sass-graph@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b"
+ dependencies:
+ glob "^7.0.0"
+ lodash "^4.0.0"
+ yargs "^4.7.1"
+
+sass-loader@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.5.tgz#a847910f36442aa56c5985879d54eb519e24a328"
+ dependencies:
+ async "^2.1.5"
+ clone-deep "^0.2.4"
+ loader-utils "^1.0.1"
+ lodash.tail "^4.1.1"
+ pify "^2.3.0"
+
+sax@^1.2.1, sax@~1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
+
+sc-auth@~3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/sc-auth/-/sc-auth-3.2.1.tgz#91729995e3a38cbd5e76151ba6bba8137409725f"
+ dependencies:
+ jsonwebtoken "7.2.1"
+ sc-errors "1.0.x"
+
+sc-broker-cluster@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/sc-broker-cluster/-/sc-broker-cluster-4.0.0.tgz#d0f57f1e33104adc24a2a1c1d4fc5209ab6a0d2e"
+ dependencies:
+ async "2.0.0"
+ sc-broker "2.3.x"
+ sc-channel "1.0.x"
+ sc-domain "1.x.x"
+ sc-hasher "1.x.x"
+ socketcluster-server "5.x.x"
+
+sc-broker@2.3.x:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/sc-broker/-/sc-broker-2.3.2.tgz#4215c187319ae6b277025ff887dcf6a9d73d1d98"
+ dependencies:
+ expirymanager "0.9.x"
+ fleximap "0.9.x"
+ ncom "0.11.x"
+ sc-domain "1.x.x"
+
+sc-channel@1.0.x, sc-channel@~1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.0.6.tgz#b38bd47a993e78290fbc53467867f6b2a0a08639"
+ dependencies:
+ sc-emitter "1.x.x"
+
+sc-domain@1.x.x, sc-domain@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sc-domain/-/sc-domain-1.0.1.tgz#aa402509b879ba76012e9732dc1d07f653b834bc"
+
+sc-emitter@1.x.x, sc-emitter@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/sc-emitter/-/sc-emitter-1.1.0.tgz#ef119d4222f4c64f887b486964ef11116cdd0e75"
+ dependencies:
+ component-emitter "1.2.0"
+
+sc-errors@1.0.x:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.0.6.tgz#80e77c36348b2c88bbe7ead8dc63be61f34b7103"
+ dependencies:
+ cycle "1.0.3"
+
+sc-errors@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.1.0.tgz#dc2f83df68ce64f6a96cc9c5e2015570ad272dbe"
+ dependencies:
+ cycle "1.0.3"
+
+sc-formatter@3.0.x, sc-formatter@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.0.tgz#c91b1fe56c260abd5a6a2e6af98c724bc7998a38"
+
+sc-hasher@1.x.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/sc-hasher/-/sc-hasher-1.0.0.tgz#bb22ae1f5a295b847c70aff4515536224950ff11"
+
+sc-simple-broker@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/sc-simple-broker/-/sc-simple-broker-2.0.0.tgz#2de6fd35235a0b76d7ae6349d1c7f9dd1e18091c"
+ dependencies:
+ sc-channel "~1.0.6"
+
+sdp@^1.5.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/sdp/-/sdp-1.5.2.tgz#57a6f24aa5e606357e7df0760990aadd6495ce9f"
+
+seek-bzip@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
+ dependencies:
+ commander "~2.8.1"
+
+semver-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9"
+
+semver-truncate@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8"
+ dependencies:
+ semver "^5.3.0"
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
+semver@^4.0.3:
+ version "4.3.6"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
+
+send@0.15.3:
+ version "0.15.3"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309"
+ dependencies:
+ debug "2.6.7"
+ depd "~1.1.0"
+ destroy "~1.0.4"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.8.0"
+ fresh "0.5.0"
+ http-errors "~1.6.1"
+ mime "1.3.4"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.3.1"
+
+serialize-error@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a"
+
+serve-static@1.12.3:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2"
+ dependencies:
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ parseurl "~1.3.1"
+ send "0.15.3"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
+set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+
+setimmediate@^1.0.4, setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+
+setprototypeof@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+
+sha.js@^2.3.6:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
+ dependencies:
+ inherits "^2.0.1"
+
+shallow-clone@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060"
+ dependencies:
+ is-extendable "^0.1.1"
+ kind-of "^2.0.1"
+ lazy-cache "^0.2.3"
+ mixin-object "^2.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+
+shelljs@^0.7.5:
+ version "0.7.7"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+shellwords@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
+
+shortid@^2.2.6:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.8.tgz#033b117d6a2e975804f6f0969dbe7d3d0b355131"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ dependencies:
+ hoek "2.x.x"
+
+socketcluster-client@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-5.3.1.tgz#83eb73bf5cfcd559e372035ab032b0df185936aa"
+ dependencies:
+ base-64 "0.1.0"
+ linked-list "0.1.0"
+ lodash.clonedeep "4.5.0"
+ querystring "0.2.0"
+ sc-channel "1.0.x"
+ sc-emitter "1.x.x"
+ sc-errors "1.0.x"
+ sc-formatter "3.0.x"
+ ws "1.1.2"
+
+socketcluster-server@5.x.x, socketcluster-server@~5.11.0:
+ version "5.11.0"
+ resolved "https://registry.yarnpkg.com/socketcluster-server/-/socketcluster-server-5.11.0.tgz#93796eae08890bd9e0318328df3b7fb21acda2fb"
+ dependencies:
+ async "2.0.0"
+ base64id "0.1.0"
+ lodash.clonedeep "4.5.0"
+ sc-auth "~3.2.1"
+ sc-domain "~1.0.1"
+ sc-emitter "~1.1.0"
+ sc-errors "~1.1.0"
+ sc-formatter "~3.0.0"
+ sc-simple-broker "~2.0.0"
+ uuid "3.0.1"
+ uws "0.14.5"
+ ws "1.1.1"
+
+socketcluster@^5.0.4:
+ version "5.11.0"
+ resolved "https://registry.yarnpkg.com/socketcluster/-/socketcluster-5.11.0.tgz#05979569cfc63f295c86c186c1c0524f8ad88184"
+ dependencies:
+ async "2.0.0"
+ base64id "0.1.0"
+ fs-extra "2.0.0"
+ inquirer "1.1.3"
+ minimist "1.1.0"
+ sc-auth "~3.2.1"
+ sc-broker-cluster "~4.0.0"
+ sc-domain "~1.0.1"
+ sc-emitter "~1.1.0"
+ sc-errors "~1.1.0"
+ socketcluster-server "~5.11.0"
+ uid-number "0.0.5"
+ uuid "3.0.1"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-list-map@^0.1.7, source-list-map@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
+
+source-list-map@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4"
+
+source-map-support@^0.4.2:
+ version "0.4.14"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef"
+ dependencies:
+ source-map "^0.5.6"
+
+source-map@0.1.31:
+ version "0.1.31"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.31.tgz#9f704d0d69d9e138a81badf6ebb4fde33d151c61"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+
+source-map@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
+ dependencies:
+ amdefine ">=0.0.4"
+
+sparkles@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
+
+spawn-sync@^1.0.15:
+ version "1.0.15"
+ resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476"
+ dependencies:
+ concat-stream "^1.4.7"
+ os-shim "^0.1.2"
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
+squeak@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3"
+ dependencies:
+ chalk "^1.0.0"
+ console-stream "^0.1.1"
+ lpad-align "^1.0.1"
+
+sshpk@^1.7.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stat-mode@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502"
+
+"statuses@>= 1.3.1 < 2", statuses@~1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
+
+stdout-stream@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
+ dependencies:
+ readable-stream "^2.0.1"
+
+stealthy-require@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.0.0.tgz#1a8ed8fc19a8b56268f76f5a1a3e3832b0c26200"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
+
+stream-http@^2.3.1:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6"
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.2.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+
+string-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac"
+ dependencies:
+ strip-ansi "^3.0.0"
+
+string-width@^1.0.1, string-width@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string-width@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e"
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
+string_decoder@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667"
+ dependencies:
+ buffer-shims "~1.0.0"
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee"
+ dependencies:
+ first-chunk-stream "^1.0.0"
+ strip-bom "^2.0.0"
+
+strip-bom@3.0.0, strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-dirs@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0"
+ dependencies:
+ chalk "^1.0.0"
+ get-stdin "^4.0.1"
+ is-absolute "^0.1.5"
+ is-natural-number "^2.0.0"
+ minimist "^1.1.0"
+ sum-up "^1.0.1"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
+strip-outer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8"
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
+style-loader@^0.17.0:
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.17.0.tgz#e8254bccdb7af74bd58274e36107b4d5ab4df310"
+ dependencies:
+ loader-utils "^1.0.2"
+
+sum-up@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e"
+ dependencies:
+ chalk "^1.0.0"
+
+superagent@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.5.2.tgz#3361a3971567504c351063abeaae0faa23dbf3f8"
+ dependencies:
+ component-emitter "^1.2.0"
+ cookiejar "^2.0.6"
+ debug "^2.2.0"
+ extend "^3.0.0"
+ form-data "^2.1.1"
+ formidable "^1.1.1"
+ methods "^1.1.1"
+ mime "^1.3.4"
+ qs "^6.1.0"
+ readable-stream "^2.0.5"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ dependencies:
+ has-flag "^1.0.0"
+
+svgo@^0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+ dependencies:
+ coa "~1.0.1"
+ colors "~1.1.2"
+ csso "~2.3.1"
+ js-yaml "~3.7.0"
+ mkdirp "~0.5.1"
+ sax "~1.2.1"
+ whet.extend "~0.9.9"
+
+symbol-observable@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
+
+symbol-tree@^3.2.1:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+
+table@^3.7.8:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
+ dependencies:
+ 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"
+
+tapable@^0.2.5, tapable@~0.2.5:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
+
+tar-pack@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
+ dependencies:
+ debug "^2.2.0"
+ fstream "^1.0.10"
+ fstream-ignore "^1.0.5"
+ once "^1.3.3"
+ readable-stream "^2.1.4"
+ rimraf "^2.5.1"
+ tar "^2.2.1"
+ uid-number "^0.0.6"
+
+tar-stream@^1.1.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf"
+ dependencies:
+ bl "^1.0.0"
+ end-of-stream "^1.0.0"
+ readable-stream "^2.0.0"
+ xtend "^4.0.0"
+
+tar@^2.0.0, tar@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+tempfile@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2"
+ dependencies:
+ os-tmpdir "^1.0.0"
+ uuid "^2.0.1"
+
+test-exclude@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.3.tgz#86a13ce3effcc60e6c90403cf31a27a60ac6c4e7"
+ dependencies:
+ arrify "^1.0.1"
+ micromatch "^2.3.11"
+ object-assign "^4.1.0"
+ read-pkg-up "^1.0.1"
+ require-main-filename "^1.0.1"
+
+text-table@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+
+throat@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6"
+
+through2-filter@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec"
+ dependencies:
+ through2 "~2.0.0"
+ xtend "~4.0.0"
+
+through2@^0.6.0, through2@^0.6.1, through2@^0.6.2, through2@^0.6.5:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
+ dependencies:
+ readable-stream ">=1.0.33-1 <1.1.0-0"
+ xtend ">=4.0.0 <4.1.0-0"
+
+through2@^2.0.0, through2@~2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
+through@^2.3.6, through@~2.3.4, through@~2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+
+time-stamp@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151"
+
+timed-out@^3.0.0:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
+
+timers-browserify@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
+ dependencies:
+ setimmediate "^1.0.4"
+
+tmp@^0.0.29:
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0"
+ dependencies:
+ os-tmpdir "~1.0.1"
+
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+
+to-absolute-glob@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f"
+ dependencies:
+ extend-shallow "^2.0.1"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+
+to-camel-case@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46"
+ dependencies:
+ to-space-case "^1.0.0"
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+
+to-no-case@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a"
+
+to-space-case@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17"
+ dependencies:
+ to-no-case "^1.0.0"
+
+topo@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5"
+ dependencies:
+ hoek "2.x.x"
+
+toposort@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c"
+
+tough-cookie@^2.3.2, tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ dependencies:
+ punycode "^1.4.1"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+
+trim-repeated@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+
+tryit@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+
+tunnel-agent@^0.4.0:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+
+twemoji@2.2.5:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/twemoji/-/twemoji-2.2.5.tgz#116907bff0c95b56b6414857c5d8588972a52956"
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-is@~1.6.14, type-is@~1.6.15:
+ version "1.6.15"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.15"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+
+ua-parser-js@^0.7.9:
+ version "0.7.12"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
+
+uglify-js@^2.6, uglify-js@^2.8.5, uglify-js@~2.8.22:
+ version "2.8.22"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
+ dependencies:
+ source-map "~0.5.1"
+ yargs "~3.10.0"
+ optionalDependencies:
+ uglify-to-browserify "~1.0.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+
+uid-number@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.5.tgz#5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e"
+
+uid-number@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+
+ultron@1.0.x:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
+
+uncontrollable@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-4.1.0.tgz#e0358291252e1865222d90939b19f2f49f81c1a9"
+ dependencies:
+ invariant "^2.1.0"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+
+uniqid@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
+ dependencies:
+ macaddress "^0.2.8"
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+
+unique-stream@^2.0.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369"
+ dependencies:
+ json-stable-stringify "^1.0.0"
+ through2-filter "^2.0.0"
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+
+unreachable-branch-transform@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz#d99cc4c6e746d264928845b611db54b0f3474caa"
+ dependencies:
+ esmangle-evaluator "^1.0.0"
+ recast "^0.10.1"
+ through2 "^0.6.2"
+
+unzip-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
+
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+
+url-loader@0.5.8:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5"
+ dependencies:
+ loader-utils "^1.0.2"
+ mime "1.3.x"
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-regex@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724"
+ dependencies:
+ ip-regex "^1.0.1"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+
+user-home@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
+ dependencies:
+ os-homedir "^1.0.0"
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ dependencies:
+ inherits "2.0.1"
+
+utila@~0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+
+utils-merge@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
+
+uuid@3.0.1, uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+
+uuid@^2.0.1, uuid@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+
+uws@0.14.5:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc"
+
+v8flags@^2.0.10:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
+ dependencies:
+ user-home "^1.1.1"
+
+vali-date@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+vary@^1, vary@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37"
+
+velocity-animate@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.0.tgz#fc8771d8dfe1136ff02a707e10fbb0957c4b030f"
+
+vendors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ dependencies:
+ extsprintf "1.0.2"
+
+vinyl-assign@^1.0.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45"
+ dependencies:
+ object-assign "^4.0.1"
+ readable-stream "^2.0.0"
+
+vinyl-fs@^2.2.0:
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239"
+ dependencies:
+ duplexify "^3.2.0"
+ glob-stream "^5.3.2"
+ graceful-fs "^4.0.0"
+ gulp-sourcemaps "1.6.0"
+ is-valid-glob "^0.3.0"
+ lazystream "^1.0.0"
+ lodash.isequal "^4.0.0"
+ merge-stream "^1.0.0"
+ mkdirp "^0.5.0"
+ object-assign "^4.0.0"
+ readable-stream "^2.0.4"
+ strip-bom "^2.0.0"
+ strip-bom-stream "^1.0.0"
+ through2 "^2.0.0"
+ through2-filter "^2.0.0"
+ vali-date "^1.0.0"
+ vinyl "^1.0.0"
+
+vinyl@^0.4.3:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847"
+ dependencies:
+ clone "^0.2.0"
+ clone-stats "^0.0.1"
+
+vinyl@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
+ dependencies:
+ clone "^1.0.0"
+ clone-stats "^0.0.1"
+ replace-ext "0.0.1"
+
+vinyl@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884"
+ dependencies:
+ clone "^1.0.0"
+ clone-stats "^0.0.1"
+ replace-ext "0.0.1"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ dependencies:
+ indexof "0.0.1"
+
+walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ dependencies:
+ makeerror "1.0.x"
+
+ware@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4"
+ dependencies:
+ wrap-fn "^0.1.0"
+
+warning@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-2.1.0.tgz#21220d9c63afc77a8c92111e011af705ce0c6901"
+ dependencies:
+ loose-envify "^1.0.0"
+
+warning@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
+ dependencies:
+ loose-envify "^1.0.0"
+
+watch@~0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
+
+watchpack@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
+ dependencies:
+ async "^2.1.2"
+ chokidar "^1.4.3"
+ graceful-fs "^4.1.2"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+
+webidl-conversions@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0"
+
+webpack-node-externals@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd"
+
+webpack-sources@^0.1.0:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750"
+ dependencies:
+ source-list-map "~0.1.7"
+ source-map "~0.5.3"
+
+webpack-sources@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"
+ dependencies:
+ source-list-map "^1.1.1"
+ source-map "~0.5.3"
+
+webpack@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.5.1.tgz#61742f0cf8af555b87460a9cd8bba2f1e3ee2fce"
+ dependencies:
+ acorn "^5.0.0"
+ acorn-dynamic-import "^2.0.0"
+ ajv "^4.7.0"
+ ajv-keywords "^1.1.1"
+ async "^2.1.2"
+ enhanced-resolve "^3.0.0"
+ interpret "^1.0.0"
+ json-loader "^0.5.4"
+ json5 "^0.5.1"
+ loader-runner "^2.3.0"
+ loader-utils "^0.2.16"
+ memory-fs "~0.4.1"
+ mkdirp "~0.5.0"
+ node-libs-browser "^2.0.0"
+ source-map "^0.5.3"
+ supports-color "^3.1.0"
+ tapable "~0.2.5"
+ uglify-js "^2.8.5"
+ watchpack "^1.3.1"
+ webpack-sources "^0.2.3"
+ yargs "^6.0.0"
+
+webrtc-adapter@^3.4.2:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-3.4.2.tgz#7e36c6f6461d2546f1b82341879166d47fa932f9"
+ dependencies:
+ sdp "^1.5.0"
+
+whatwg-encoding@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4"
+ dependencies:
+ iconv-lite "0.4.13"
+
+whatwg-fetch@2.0.3, whatwg-fetch@>=0.10.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+
+whatwg-url@^4.3.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.7.0.tgz#202035ac1955b087cdd20fa8b58ded3ab1cd2af5"
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+whet.extend@~0.9.9:
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+
+which-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+
+which@1, which@^1.2.12, which@^1.2.9:
+ version "1.2.14"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+
+window-size@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
+
+wordwrap@0.0.2, wordwrap@~0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+
+worker-farm@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff"
+ dependencies:
+ errno ">=0.1.1 <0.2.0-0"
+ xtend ">=4.0.0 <4.1.0-0"
+
+worker-loader@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-0.8.0.tgz#13582960dcd7d700dc829d3fd252a7561696167e"
+ dependencies:
+ loader-utils "^1.0.2"
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrap-fn@^0.1.0:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845"
+ dependencies:
+ co "3.1.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
+write@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+ dependencies:
+ mkdirp "^0.5.1"
+
+ws@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018"
+ dependencies:
+ options ">=0.0.5"
+ ultron "1.0.x"
+
+ws@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
+ dependencies:
+ options ">=0.0.5"
+ ultron "1.0.x"
+
+xml-char-classes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+
+xml-name-validator@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+
+xregexp@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.2.0.tgz#cb3601987bfe2695b584000c18f1c4a8c322878e"
+
+"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+y18n@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+
+yallist@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+
+yargs-parser@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4"
+ dependencies:
+ camelcase "^3.0.0"
+ lodash.assign "^4.0.6"
+
+yargs-parser@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs-parser@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs@^4.7.1:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"
+ dependencies:
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ lodash.assign "^4.0.3"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.1"
+ which-module "^1.0.0"
+ window-size "^0.2.0"
+ y18n "^3.2.1"
+ yargs-parser "^2.4.1"
+
+yargs@^6.0.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+ dependencies:
+ camelcase "^3.0.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.2"
+ which-module "^1.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^4.2.0"
+
+yargs@^7.0.2:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
+ dependencies:
+ camelcase "^3.0.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.2"
+ which-module "^1.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^5.0.0"
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
+
+yauzl@^2.2.1:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.0.1"