diff --git a/package.json b/package.json index 3e89f0945407f6..e1557fd1eeba98 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "node-libs-browser": "0.5.3", "platformicons": "0.1.1", "po-catalog-loader": "^1.2.0", + "prop-types": "^15.5.10", "query-string": "2.4.2", "raven-js": "3.16.1", "react": "15.3.2", @@ -84,7 +85,9 @@ "snapshot": "build-storybook && PERCY_TOKEN=$STORYBOOK_PERCY_TOKEN PERCY_PROJECT=$STORYBOOK_PERCY_PROJECT percy-storybook --widths=375,1280" }, "jest": { - "snapshotSerializers": ["enzyme-to-json/serializer"], + "snapshotSerializers": [ + "enzyme-to-json/serializer" + ], "moduleNameMapper": { "\\.(css|less)$": "/tests/js/helpers/importStyleMock.js", "integration-docs-platforms": "/tests/fixtures/_platforms.json" @@ -102,9 +105,9 @@ }, "devDependencies": { "@percy-io/react-percy-storybook": "^1.0.2", - "@storybook/addon-actions": "3.2.0", - "@storybook/addon-info": "3.2.0", - "@storybook/react": "3.2.0", + "@storybook/addon-actions": "^3.2.0", + "@storybook/addon-info": "^3.2.0", + "@storybook/react": "^3.2.0", "babel-eslint": "7.1.1", "babel-jest": "^19.0.0", "chai": "3.4.1", diff --git a/src/sentry/static/sentry/app/components/actionOverlay.jsx b/src/sentry/static/sentry/app/components/actionOverlay.jsx index b42fdde50f71f1..6c5f033e31ef5c 100644 --- a/src/sentry/static/sentry/app/components/actionOverlay.jsx +++ b/src/sentry/static/sentry/app/components/actionOverlay.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import OrganizationState from '../mixins/organizationState'; import {t} from '../locale'; @@ -6,12 +7,12 @@ import LoadingIndicator from '../components/loadingIndicator'; const ActionOverlay = React.createClass({ propTypes: { - actionId: React.PropTypes.string.isRequired, - isLoading: React.PropTypes.bool + actionId: PropTypes.string.isRequired, + isLoading: PropTypes.bool }, contextTypes: { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }, mixins: [OrganizationState], diff --git a/src/sentry/static/sentry/app/components/activity/feed.jsx b/src/sentry/static/sentry/app/components/activity/feed.jsx index e48e2388bb9a7a..611bd11f160aeb 100644 --- a/src/sentry/static/sentry/app/components/activity/feed.jsx +++ b/src/sentry/static/sentry/app/components/activity/feed.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -10,10 +11,10 @@ import {logException} from '../../utils/logging'; const ActivityFeed = React.createClass({ propTypes: { - endpoint: React.PropTypes.string, - query: React.PropTypes.object, - renderEmpty: React.PropTypes.func, - pagination: React.PropTypes.bool + endpoint: PropTypes.string, + query: PropTypes.object, + renderEmpty: PropTypes.func, + pagination: PropTypes.bool }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/activity/item.jsx b/src/sentry/static/sentry/app/components/activity/item.jsx index 6b57d13af3df3b..3c209f1b86277b 100644 --- a/src/sentry/static/sentry/app/components/activity/item.jsx +++ b/src/sentry/static/sentry/app/components/activity/item.jsx @@ -1,4 +1,5 @@ import marked from 'marked'; +import PropTypes from 'prop-types'; import React from 'react'; import {CommitLink} from '../../views/releases/releaseCommits'; @@ -14,10 +15,10 @@ import {t, tn, tct} from '../../locale'; const ActivityItem = React.createClass({ propTypes: { - clipHeight: React.PropTypes.number, - defaultClipped: React.PropTypes.bool, - item: React.PropTypes.object.isRequired, - orgId: React.PropTypes.string.isRequired + clipHeight: PropTypes.number, + defaultClipped: PropTypes.bool, + item: PropTypes.object.isRequired, + orgId: PropTypes.string.isRequired }, getDefaultProps() { @@ -55,9 +56,9 @@ const ActivityItem = React.createClass({ let issue = item.issue; let issueLink = issue - ? ( + ? {issue.shortId} - ) + : null; switch (item.type) { diff --git a/src/sentry/static/sentry/app/components/activity/note.jsx b/src/sentry/static/sentry/app/components/activity/note.jsx index c93e58bc7015c4..0db63a0e74dc1d 100644 --- a/src/sentry/static/sentry/app/components/activity/note.jsx +++ b/src/sentry/static/sentry/app/components/activity/note.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import TimeSince from '../../components/timeSince'; @@ -8,10 +9,10 @@ import marked from '../../utils/marked'; const Note = React.createClass({ propTypes: { - author: React.PropTypes.object.isRequired, - item: React.PropTypes.object.isRequired, - onEdit: React.PropTypes.func.isRequired, - onDelete: React.PropTypes.func.isRequired + author: PropTypes.object.isRequired, + item: PropTypes.object.isRequired, + onEdit: PropTypes.func.isRequired, + onDelete: PropTypes.func.isRequired }, canEdit() { diff --git a/src/sentry/static/sentry/app/components/activity/noteContainer.jsx b/src/sentry/static/sentry/app/components/activity/noteContainer.jsx index 10f465acb079e8..b49e046c5dc2a1 100644 --- a/src/sentry/static/sentry/app/components/activity/noteContainer.jsx +++ b/src/sentry/static/sentry/app/components/activity/noteContainer.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Note from './note'; @@ -5,12 +6,12 @@ import NoteInput from './noteInput'; const NoteContainer = React.createClass({ propTypes: { - group: React.PropTypes.object.isRequired, - item: React.PropTypes.object.isRequired, - author: React.PropTypes.object.isRequired, - onDelete: React.PropTypes.func.isRequired, - sessionUser: React.PropTypes.object.isRequired, - memberList: React.PropTypes.array.isRequired + group: PropTypes.object.isRequired, + item: PropTypes.object.isRequired, + author: PropTypes.object.isRequired, + onDelete: PropTypes.func.isRequired, + sessionUser: PropTypes.object.isRequired, + memberList: PropTypes.array.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/activity/noteInput.jsx b/src/sentry/static/sentry/app/components/activity/noteInput.jsx index 329e86e4ab4b3f..ea4a6c012961cb 100644 --- a/src/sentry/static/sentry/app/components/activity/noteInput.jsx +++ b/src/sentry/static/sentry/app/components/activity/noteInput.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import marked from 'marked'; @@ -20,11 +21,11 @@ function makeDefaultErrorJson() { const NoteInput = React.createClass({ propTypes: { - item: React.PropTypes.object, - group: React.PropTypes.object.isRequired, - onFinish: React.PropTypes.func, - memberList: React.PropTypes.array.isRequired, - sessionUser: React.PropTypes.object.isRequired + item: PropTypes.object, + group: PropTypes.object.isRequired, + onFinish: PropTypes.func, + memberList: PropTypes.array.isRequired, + sessionUser: PropTypes.object.isRequired }, mixins: [PureRenderMixin, ApiMixin], diff --git a/src/sentry/static/sentry/app/components/alertMessage.jsx b/src/sentry/static/sentry/app/components/alertMessage.jsx index 3f3806a7c8338f..0707d61ba14fb0 100644 --- a/src/sentry/static/sentry/app/components/alertMessage.jsx +++ b/src/sentry/static/sentry/app/components/alertMessage.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AlertActions from '../actions/alertActions'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -5,11 +6,11 @@ import {t} from '../locale'; const AlertMessage = React.createClass({ propTypes: { - alert: React.PropTypes.shape({ - id: React.PropTypes.string, - message: React.PropTypes.string.isRequired, - type: React.PropTypes.oneOf(['success', 'error', 'warning']), - url: React.PropTypes.string + alert: PropTypes.shape({ + id: PropTypes.string, + message: PropTypes.string.isRequired, + type: PropTypes.oneOf(['success', 'error', 'warning']), + url: PropTypes.string }) }, diff --git a/src/sentry/static/sentry/app/components/alerts/toastIndicator.jsx b/src/sentry/static/sentry/app/components/alerts/toastIndicator.jsx index a0f5abaeef5abe..2920d3aeb0acc0 100644 --- a/src/sentry/static/sentry/app/components/alerts/toastIndicator.jsx +++ b/src/sentry/static/sentry/app/components/alerts/toastIndicator.jsx @@ -1,4 +1,5 @@ import classNames from 'classnames'; +import PropTypes from 'prop-types'; import React from 'react'; function ToastIndicator({type, children}) { @@ -11,7 +12,7 @@ function ToastIndicator({type, children}) { } ToastIndicator.propTypes = { - type: React.PropTypes.string.isRequired + type: PropTypes.string.isRequired }; export default ToastIndicator; diff --git a/src/sentry/static/sentry/app/components/assigneeSelector.jsx b/src/sentry/static/sentry/app/components/assigneeSelector.jsx index 635e1586017680..3995e0c31c697a 100644 --- a/src/sentry/static/sentry/app/components/assigneeSelector.jsx +++ b/src/sentry/static/sentry/app/components/assigneeSelector.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import Reflux from 'reflux'; @@ -17,7 +18,7 @@ import {t} from '../locale'; const AssigneeSelector = React.createClass({ propTypes: { - id: React.PropTypes.string.isRequired + id: PropTypes.string.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/avatar.jsx b/src/sentry/static/sentry/app/components/avatar.jsx index 96acc54fdbb322..9d5f9fe8e855b6 100644 --- a/src/sentry/static/sentry/app/components/avatar.jsx +++ b/src/sentry/static/sentry/app/components/avatar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import $ from 'jquery'; import MD5 from 'crypto-js/md5'; @@ -6,11 +7,11 @@ import UserLetterAvatar from '../components/userLetterAvatar'; const Avatar = React.createClass({ propTypes: { - user: React.PropTypes.object, - size: React.PropTypes.number, - default: React.PropTypes.string, - title: React.PropTypes.string, - gravatar: React.PropTypes.bool + user: PropTypes.object, + size: PropTypes.number, + default: PropTypes.string, + title: PropTypes.string, + gravatar: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/avatarCropper.jsx b/src/sentry/static/sentry/app/components/avatarCropper.jsx index e4ceb74fc1413a..38b9b2c4325d5f 100644 --- a/src/sentry/static/sentry/app/components/avatarCropper.jsx +++ b/src/sentry/static/sentry/app/components/avatarCropper.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AlertActions from '../actions/alertActions'; @@ -5,9 +6,9 @@ import {t} from '../locale'; const AvatarCropper = React.createClass({ propTypes: { - user: React.PropTypes.object.isRequired, - updateDataUrlState: React.PropTypes.func.isRequired, - savedDataUrl: React.PropTypes.string + user: PropTypes.object.isRequired, + updateDataUrlState: PropTypes.func.isRequired, + savedDataUrl: PropTypes.string }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/avatarRadio.jsx b/src/sentry/static/sentry/app/components/avatarRadio.jsx index 59a9ef7eb58f6f..dd38546f22b21c 100644 --- a/src/sentry/static/sentry/app/components/avatarRadio.jsx +++ b/src/sentry/static/sentry/app/components/avatarRadio.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../locale'; const AvatarRadio = React.createClass({ propTypes: { - user: React.PropTypes.object.isRequired, - updateUser: React.PropTypes.func.isRequired + user: PropTypes.object.isRequired, + updateUser: PropTypes.func.isRequired }, OPTIONS: { diff --git a/src/sentry/static/sentry/app/components/avatarSettings.jsx b/src/sentry/static/sentry/app/components/avatarSettings.jsx index f41ca904a2631c..dae2de3c9badea 100644 --- a/src/sentry/static/sentry/app/components/avatarSettings.jsx +++ b/src/sentry/static/sentry/app/components/avatarSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AlertActions from '../actions/alertActions'; @@ -10,7 +11,7 @@ import {t} from '../locale'; const AvatarSettings = React.createClass({ propTypes: { - userId: React.PropTypes.number + userId: PropTypes.number }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/badge.jsx b/src/sentry/static/sentry/app/components/badge.jsx index ce3904467f6eab..68807424f1ebde 100644 --- a/src/sentry/static/sentry/app/components/badge.jsx +++ b/src/sentry/static/sentry/app/components/badge.jsx @@ -1,9 +1,10 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Badge = React.createClass({ propTypes: { - text: React.PropTypes.string, - isNew: React.PropTypes.bool + text: PropTypes.string, + isNew: PropTypes.bool }, render() { diff --git a/src/sentry/static/sentry/app/components/barChart.jsx b/src/sentry/static/sentry/app/components/barChart.jsx index 4c98f00af2095c..0771f63bad03dc 100644 --- a/src/sentry/static/sentry/app/components/barChart.jsx +++ b/src/sentry/static/sentry/app/components/barChart.jsx @@ -1,24 +1,25 @@ +import PropTypes from 'prop-types'; import React from 'react'; import StackedBarChart from '../components/stackedBarChart'; const BarChart = React.createClass({ propTypes: { - points: React.PropTypes.arrayOf( - React.PropTypes.shape({ - x: React.PropTypes.number.isRequired, - y: React.PropTypes.number.isRequired, - label: React.PropTypes.string + points: PropTypes.arrayOf( + PropTypes.shape({ + x: PropTypes.number.isRequired, + y: PropTypes.number.isRequired, + label: PropTypes.string }) ), - interval: React.PropTypes.string, - height: React.PropTypes.number, - width: React.PropTypes.number, - placement: React.PropTypes.string, - label: React.PropTypes.string, - markers: React.PropTypes.arrayOf( - React.PropTypes.shape({ - x: React.PropTypes.number.isRequired, - label: React.PropTypes.string + interval: PropTypes.string, + height: PropTypes.number, + width: PropTypes.number, + placement: PropTypes.string, + label: PropTypes.string, + markers: PropTypes.arrayOf( + PropTypes.shape({ + x: PropTypes.number.isRequired, + label: PropTypes.string }) ) }, diff --git a/src/sentry/static/sentry/app/components/broadcastModal.jsx b/src/sentry/static/sentry/app/components/broadcastModal.jsx index 7e6645f85456b2..cd4d7b80578480 100644 --- a/src/sentry/static/sentry/app/components/broadcastModal.jsx +++ b/src/sentry/static/sentry/app/components/broadcastModal.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import IconCloseLg from '../icons/icon-close-lg'; import ConfigStore from '../stores/configStore'; @@ -49,12 +50,12 @@ const ReleaseAnnouncement = ({close}) => { }; ReleaseAnnouncement.propTypes = { - close: React.PropTypes.func.isRequired + close: PropTypes.func.isRequired }; const BroadcastModal = React.createClass({ propTypes: { - closeBroadcast: React.PropTypes.func.isRequired + closeBroadcast: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/buttons/button.jsx b/src/sentry/static/sentry/app/components/buttons/button.jsx index 7ceccb495c8e61..e18323d541c395 100644 --- a/src/sentry/static/sentry/app/components/buttons/button.jsx +++ b/src/sentry/static/sentry/app/components/buttons/button.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {Link} from 'react-router'; import classNames from 'classnames'; diff --git a/src/sentry/static/sentry/app/components/clippedBox.jsx b/src/sentry/static/sentry/app/components/clippedBox.jsx index 35d7e7b80bf518..9cdd1cf7d99e3f 100644 --- a/src/sentry/static/sentry/app/components/clippedBox.jsx +++ b/src/sentry/static/sentry/app/components/clippedBox.jsx @@ -1,14 +1,15 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import {t} from '../locale'; const ClippedBox = React.createClass({ propTypes: { - title: React.PropTypes.string, - defaultClipped: React.PropTypes.bool, - clipHeight: React.PropTypes.number, - btnClassName: React.PropTypes.string, - btnText: React.PropTypes.string + title: PropTypes.string, + defaultClipped: PropTypes.bool, + clipHeight: PropTypes.number, + btnClassName: PropTypes.string, + btnText: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/commitAuthorStats.jsx b/src/sentry/static/sentry/app/components/commitAuthorStats.jsx index 3bfb98cee3c041..4bd76b015cfdde 100644 --- a/src/sentry/static/sentry/app/components/commitAuthorStats.jsx +++ b/src/sentry/static/sentry/app/components/commitAuthorStats.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import LoadingIndicator from '../components/loadingIndicator'; @@ -11,8 +12,8 @@ import {t} from '../locale'; const CommitBar = React.createClass({ propTypes: { - totalCommits: React.PropTypes.number.isRequired, - authorCommits: React.PropTypes.number.isRequired + totalCommits: PropTypes.number.isRequired, + authorCommits: PropTypes.number.isRequired }, render() { @@ -25,9 +26,9 @@ const CommitBar = React.createClass({ const CommitAuthorStats = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - version: React.PropTypes.string.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + version: PropTypes.string.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/compactIssue.jsx b/src/sentry/static/sentry/app/components/compactIssue.jsx index 2c3b46c64377db..57fded026d4069 100644 --- a/src/sentry/static/sentry/app/components/compactIssue.jsx +++ b/src/sentry/static/sentry/app/components/compactIssue.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; @@ -12,9 +13,9 @@ import {t} from '../locale'; const CompactIssueHeader = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + data: PropTypes.object.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, getTitle() { @@ -94,11 +95,11 @@ const CompactIssueHeader = React.createClass({ const CompactIssue = React.createClass({ propTypes: { - data: React.PropTypes.object, - id: React.PropTypes.string, - orgId: React.PropTypes.string, - statsPeriod: React.PropTypes.string, - showActions: React.PropTypes.bool + data: PropTypes.object, + id: PropTypes.string, + orgId: PropTypes.string, + statsPeriod: PropTypes.string, + showActions: PropTypes.bool }, mixins: [ApiMixin, Reflux.listenTo(GroupStore, 'onGroupChange')], diff --git a/src/sentry/static/sentry/app/components/confirms/numberConfirm.jsx b/src/sentry/static/sentry/app/components/confirms/numberConfirm.jsx index 4f51fc6dc8520b..fc7248160e551a 100644 --- a/src/sentry/static/sentry/app/components/confirms/numberConfirm.jsx +++ b/src/sentry/static/sentry/app/components/confirms/numberConfirm.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactCodeInput from 'react-code-input'; import Modal from 'react-bootstrap/lib/Modal'; @@ -5,9 +6,9 @@ import {t} from '../../locale'; const NumberConfirm = React.createClass({ propTypes: { - digits: React.PropTypes.number.isRequired, - show: React.PropTypes.bool, - onFinished: React.PropTypes.func + digits: PropTypes.number.isRequired, + show: PropTypes.bool, + onFinished: PropTypes.func }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/contextData.jsx b/src/sentry/static/sentry/app/components/contextData.jsx index b1bbb5e32a0f82..518e79dc16ba3f 100644 --- a/src/sentry/static/sentry/app/components/contextData.jsx +++ b/src/sentry/static/sentry/app/components/contextData.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import jQuery from 'jquery'; import {isUrl} from '../utils'; @@ -70,7 +71,7 @@ function analyzeStringForRepr(value) { const ContextData = React.createClass({ propTypes: { - data: React.PropTypes.any + data: PropTypes.any }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/count.jsx b/src/sentry/static/sentry/app/components/count.jsx index f0fd092040affb..32dd8d326efaa6 100644 --- a/src/sentry/static/sentry/app/components/count.jsx +++ b/src/sentry/static/sentry/app/components/count.jsx @@ -1,8 +1,9 @@ +import PropTypes from 'prop-types'; import React from 'react'; export default React.createClass({ propTypes: { - value: React.PropTypes.any.isRequired + value: PropTypes.any.isRequired }, shouldComponentUpdate(nextProps, nextState) { diff --git a/src/sentry/static/sentry/app/components/customIgnoreCountModal.jsx b/src/sentry/static/sentry/app/components/customIgnoreCountModal.jsx index ae2ebf6df5b3d9..85898f106214d5 100644 --- a/src/sentry/static/sentry/app/components/customIgnoreCountModal.jsx +++ b/src/sentry/static/sentry/app/components/customIgnoreCountModal.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import {Select2Field} from './forms'; @@ -5,14 +6,14 @@ import {t} from '../locale'; export default React.createClass({ propTypes: { - onSelected: React.PropTypes.func, - onCanceled: React.PropTypes.func, - show: React.PropTypes.bool, - label: React.PropTypes.string.isRequired, - countLabel: React.PropTypes.string.isRequired, - countName: React.PropTypes.string.isRequired, - windowName: React.PropTypes.string.isRequired, - windowChoices: React.PropTypes.array.isRequired + onSelected: PropTypes.func, + onCanceled: PropTypes.func, + show: PropTypes.bool, + label: PropTypes.string.isRequired, + countLabel: PropTypes.string.isRequired, + countName: PropTypes.string.isRequired, + windowName: PropTypes.string.isRequired, + windowChoices: PropTypes.array.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/customIgnoreDurationModal.jsx b/src/sentry/static/sentry/app/components/customIgnoreDurationModal.jsx index 5da325a7e4ec13..8ec2259a1817a5 100644 --- a/src/sentry/static/sentry/app/components/customIgnoreDurationModal.jsx +++ b/src/sentry/static/sentry/app/components/customIgnoreDurationModal.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import {t} from '../locale'; @@ -5,10 +6,10 @@ import {sprintf} from 'sprintf-js'; export default React.createClass({ propTypes: { - onSelected: React.PropTypes.func, - onCanceled: React.PropTypes.func, - show: React.PropTypes.bool, - label: React.PropTypes.string + onSelected: PropTypes.func, + onCanceled: PropTypes.func, + show: PropTypes.bool, + label: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/customResolutionModal.jsx b/src/sentry/static/sentry/app/components/customResolutionModal.jsx index e5f2c4d3865182..dc8028dd7ebee1 100644 --- a/src/sentry/static/sentry/app/components/customResolutionModal.jsx +++ b/src/sentry/static/sentry/app/components/customResolutionModal.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOMServer from 'react-dom/server'; import jQuery from 'jquery'; @@ -12,11 +13,11 @@ import {t} from '../locale'; export default React.createClass({ propTypes: { - onSelected: React.PropTypes.func.isRequired, - onCanceled: React.PropTypes.func.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - show: React.PropTypes.bool + onSelected: PropTypes.func.isRequired, + onCanceled: PropTypes.func.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + show: PropTypes.bool }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/dateTime.jsx b/src/sentry/static/sentry/app/components/dateTime.jsx index 110face17a8038..3c22f05a8c3e9a 100644 --- a/src/sentry/static/sentry/app/components/dateTime.jsx +++ b/src/sentry/static/sentry/app/components/dateTime.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import moment from 'moment'; import ConfigStore from '../stores/configStore.jsx'; @@ -5,8 +6,8 @@ import _ from 'lodash'; const DateTime = React.createClass({ propTypes: { - date: React.PropTypes.any.isRequired, - seconds: React.PropTypes.bool + date: PropTypes.any.isRequired, + seconds: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/dropdownLink.jsx b/src/sentry/static/sentry/app/components/dropdownLink.jsx index 83e6f1c8ef71e9..4ed1435d72aa97 100644 --- a/src/sentry/static/sentry/app/components/dropdownLink.jsx +++ b/src/sentry/static/sentry/app/components/dropdownLink.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; @@ -6,16 +7,16 @@ require('bootstrap/js/dropdown'); const DropdownLink = React.createClass({ propTypes: { - title: React.PropTypes.node, + title: PropTypes.node, /** display dropdown caret */ - caret: React.PropTypes.bool, - disabled: React.PropTypes.bool, - onOpen: React.PropTypes.func, - onClose: React.PropTypes.func, + caret: PropTypes.bool, + disabled: PropTypes.bool, + onOpen: PropTypes.func, + onClose: PropTypes.func, /** anchors menu to the right */ - anchorRight: React.PropTypes.bool, - topLevelClasses: React.PropTypes.string, - menuClasses: React.PropTypes.string + anchorRight: PropTypes.bool, + topLevelClasses: PropTypes.string, + menuClasses: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/duration.jsx b/src/sentry/static/sentry/app/components/duration.jsx index c8828a781e7627..40371cc455052d 100644 --- a/src/sentry/static/sentry/app/components/duration.jsx +++ b/src/sentry/static/sentry/app/components/duration.jsx @@ -1,8 +1,9 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Duration = React.createClass({ propTypes: { - seconds: React.PropTypes.number.isRequired + seconds: PropTypes.number.isRequired }, getDuration() { diff --git a/src/sentry/static/sentry/app/components/dynamicWrapper.jsx b/src/sentry/static/sentry/app/components/dynamicWrapper.jsx index a327db4fed5ecf..a12df00dadb29d 100644 --- a/src/sentry/static/sentry/app/components/dynamicWrapper.jsx +++ b/src/sentry/static/sentry/app/components/dynamicWrapper.jsx @@ -1,6 +1,8 @@ /* global process */ // eslint-disable-next-line no-unused-vars -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; + +import React from 'react'; const DynamicWrapper = ({fixed, value, ...otherProps}) => { // Wrap with span b/c react diff --git a/src/sentry/static/sentry/app/components/errors/detailedError.jsx b/src/sentry/static/sentry/app/components/errors/detailedError.jsx index e979120c1d7b27..3c55d38e408070 100644 --- a/src/sentry/static/sentry/app/components/errors/detailedError.jsx +++ b/src/sentry/static/sentry/app/components/errors/detailedError.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import classNames from 'classnames'; import {t} from '../../locale'; diff --git a/src/sentry/static/sentry/app/components/errors/groupEventDetailsLoadingError.jsx b/src/sentry/static/sentry/app/components/errors/groupEventDetailsLoadingError.jsx index 920287da69d609..581442bad1b4e9 100644 --- a/src/sentry/static/sentry/app/components/errors/groupEventDetailsLoadingError.jsx +++ b/src/sentry/static/sentry/app/components/errors/groupEventDetailsLoadingError.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {t} from '../../locale'; import DetailedError from './detailedError'; diff --git a/src/sentry/static/sentry/app/components/eventOrGroupExtraDetails.jsx b/src/sentry/static/sentry/app/components/eventOrGroupExtraDetails.jsx index 3b9334c82ba41b..ae8759b6ccf91a 100644 --- a/src/sentry/static/sentry/app/components/eventOrGroupExtraDetails.jsx +++ b/src/sentry/static/sentry/app/components/eventOrGroupExtraDetails.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {Link} from 'react-router'; import ProjectState from '../mixins/projectState'; diff --git a/src/sentry/static/sentry/app/components/eventOrGroupHeader.jsx b/src/sentry/static/sentry/app/components/eventOrGroupHeader.jsx index de4c8c57c71c5a..683f937c001d3b 100644 --- a/src/sentry/static/sentry/app/components/eventOrGroupHeader.jsx +++ b/src/sentry/static/sentry/app/components/eventOrGroupHeader.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import classNames from 'classnames'; import {Link} from 'react-router'; diff --git a/src/sentry/static/sentry/app/components/eventOrGroupTitle.jsx b/src/sentry/static/sentry/app/components/eventOrGroupTitle.jsx index 98dad805ac73f1..6f5e05b1f87160 100644 --- a/src/sentry/static/sentry/app/components/eventOrGroupTitle.jsx +++ b/src/sentry/static/sentry/app/components/eventOrGroupTitle.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {Metadata} from '../proptypes'; const EventOrGroupTitle = React.createClass({ diff --git a/src/sentry/static/sentry/app/components/events/contextSummary.jsx b/src/sentry/static/sentry/app/components/events/contextSummary.jsx index 36ef53c98ce312..dee727402f1555 100644 --- a/src/sentry/static/sentry/app/components/events/contextSummary.jsx +++ b/src/sentry/static/sentry/app/components/events/contextSummary.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from '../../components/avatar'; @@ -15,7 +16,7 @@ const generateClassName = function(name) { const NoSummary = React.createClass({ propTypes: { - title: React.PropTypes.string.isRequired + title: PropTypes.string.isRequired }, render() { @@ -30,8 +31,8 @@ const NoSummary = React.createClass({ const GenericSummary = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - unknownTitle: React.PropTypes.string.isRequired + data: PropTypes.object.isRequired, + unknownTitle: PropTypes.string.isRequired }, render() { @@ -55,7 +56,7 @@ const GenericSummary = React.createClass({ const UserSummary = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, render() { @@ -94,7 +95,7 @@ const UserSummary = React.createClass({ const DeviceSummary = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts.jsx b/src/sentry/static/sentry/app/components/events/contexts.jsx index 0688931ff30798..5ff0befb398987 100644 --- a/src/sentry/static/sentry/app/components/events/contexts.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from './eventDataSection'; @@ -31,11 +32,11 @@ function getSourcePlugin(pluginContexts, contextType) { const ContextChunk = React.createClass({ propTypes: { - event: React.PropTypes.object.isRequired, - group: React.PropTypes.object.isRequired, - type: React.PropTypes.string.isRequired, - alias: React.PropTypes.string.isRequired, - value: React.PropTypes.object.isRequired + event: PropTypes.object.isRequired, + group: PropTypes.object.isRequired, + type: PropTypes.string.isRequired, + alias: PropTypes.string.isRequired, + value: PropTypes.object.isRequired }, getInitialState() { @@ -127,8 +128,8 @@ const ContextChunk = React.createClass({ const ContextsInterface = React.createClass({ propTypes: { - event: React.PropTypes.object.isRequired, - group: React.PropTypes.object.isRequired + event: PropTypes.object.isRequired, + group: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/app.jsx b/src/sentry/static/sentry/app/components/events/contexts/app.jsx index a0bb34ebe4c62c..371fea131399ae 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/app.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/app.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from './contextBlock'; const AppContextType = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/contextBlock.jsx b/src/sentry/static/sentry/app/components/events/contexts/contextBlock.jsx index 9aa34caf97c008..89fdfb3cf25282 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/contextBlock.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/contextBlock.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -6,9 +7,9 @@ import {defined} from '../../../utils'; const ContextBlock = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - knownData: React.PropTypes.array + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + knownData: PropTypes.array }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/default.jsx b/src/sentry/static/sentry/app/components/events/contexts/default.jsx index bfd903a4f7827d..5a0dfffbea6269 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/default.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/default.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from './contextBlock'; const DefaultContextType = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/device.jsx b/src/sentry/static/sentry/app/components/events/contexts/device.jsx index 2d32b95fd0bf59..c8eb3a9fa68cac 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/device.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/device.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from './contextBlock'; @@ -5,8 +6,8 @@ import {defined, formatBytes} from '../../../utils'; const DeviceContextType = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, formatMemory(memory_size, free_memory, usable_memory) { diff --git a/src/sentry/static/sentry/app/components/events/contexts/os.jsx b/src/sentry/static/sentry/app/components/events/contexts/os.jsx index e32e3dfa9b9a21..b76ba66b8f54f3 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/os.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/os.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from './contextBlock'; @@ -5,8 +6,8 @@ import {defined} from '../../../utils'; const OsContextType = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/runtime.jsx b/src/sentry/static/sentry/app/components/events/contexts/runtime.jsx index 067bd50b512007..b13fee1902b080 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/runtime.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/runtime.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from './contextBlock'; const RuntimeContextType = React.createClass({ propTypes: { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/contexts/user.jsx b/src/sentry/static/sentry/app/components/events/contexts/user.jsx index 4554e0a6ab1487..7344034acca573 100644 --- a/src/sentry/static/sentry/app/components/events/contexts/user.jsx +++ b/src/sentry/static/sentry/app/components/events/contexts/user.jsx @@ -1,4 +1,6 @@ /*eslint react/jsx-key:0*/ +import PropTypes from 'prop-types'; + import React from 'react'; import _ from 'lodash'; @@ -7,7 +9,7 @@ import KeyValueList from '../interfaces/keyValueList'; const UserContextType = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/errorItem.jsx b/src/sentry/static/sentry/app/components/events/errorItem.jsx index 96bd76ba80ea34..b569a5967bad62 100644 --- a/src/sentry/static/sentry/app/components/events/errorItem.jsx +++ b/src/sentry/static/sentry/app/components/events/errorItem.jsx @@ -1,9 +1,10 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../../locale'; const EventErrorItem = React.createClass({ propTypes: { - error: React.PropTypes.object.isRequired + error: PropTypes.object.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/eventDataSection.jsx b/src/sentry/static/sentry/app/components/events/eventDataSection.jsx index eb3f1e4326f653..7b00822e076aa9 100644 --- a/src/sentry/static/sentry/app/components/events/eventDataSection.jsx +++ b/src/sentry/static/sentry/app/components/events/eventDataSection.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SentryTypes from '../../proptypes'; import {t} from '../../locale'; @@ -6,11 +7,11 @@ const GroupEventDataSection = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - title: React.PropTypes.any, - type: React.PropTypes.string.isRequired, - wrapTitle: React.PropTypes.bool, - toggleRaw: React.PropTypes.func, - raw: React.PropTypes.bool + title: PropTypes.any, + type: PropTypes.string.isRequired, + wrapTitle: PropTypes.bool, + toggleRaw: PropTypes.func, + raw: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/events/eventEntries.jsx b/src/sentry/static/sentry/app/components/events/eventEntries.jsx index ef6bd258114137..55106f88aaaef2 100644 --- a/src/sentry/static/sentry/app/components/events/eventEntries.jsx +++ b/src/sentry/static/sentry/app/components/events/eventEntries.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {logException} from '../../utils/logging'; @@ -41,11 +42,11 @@ const EventEntries = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - orgId: React.PropTypes.string.isRequired, - project: React.PropTypes.object.isRequired, + orgId: PropTypes.string.isRequired, + project: PropTypes.object.isRequired, // TODO(dcramer): ideally isShare would be replaced with simple permission // checks - isShare: React.PropTypes.bool + isShare: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/events/eventRow.jsx b/src/sentry/static/sentry/app/components/events/eventRow.jsx index a6d63d20c4b85a..67f50150b60809 100644 --- a/src/sentry/static/sentry/app/components/events/eventRow.jsx +++ b/src/sentry/static/sentry/app/components/events/eventRow.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Router from 'react-router'; import EventStore from '../../stores/eventStore'; @@ -6,9 +7,9 @@ import TimeSince from '../timeSince'; const EventRow = React.createClass({ propTypes: { - id: React.PropTypes.string.isRequired, - orgSlug: React.PropTypes.string.isRequired, - projectSlug: React.PropTypes.string.isRequired + id: PropTypes.string.isRequired, + orgSlug: PropTypes.string.isRequired, + projectSlug: PropTypes.string.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/eventTags.jsx b/src/sentry/static/sentry/app/components/events/eventTags.jsx index b568c91066e686..4425bf9cd47012 100644 --- a/src/sentry/static/sentry/app/components/events/eventTags.jsx +++ b/src/sentry/static/sentry/app/components/events/eventTags.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import _ from 'lodash'; @@ -14,8 +15,8 @@ const EventTags = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs.jsx index 0f680ab23e68a0..48020de77e6380 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from '../eventDataSection'; import SentryTypes from '../../../proptypes'; @@ -27,17 +28,17 @@ function moduleToCategory(module) { } Collapsed.propTypes = { - onClick: React.PropTypes.func.isRequired, - count: React.PropTypes.number.isRequired + onClick: PropTypes.func.isRequired, + count: PropTypes.number.isRequired }; const BreadcrumbsInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - isShare: React.PropTypes.bool + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + isShare: PropTypes.bool }, contextTypes: { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/breadcrumb.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/breadcrumb.jsx index e0618b661df945..0e758e942d8597 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/breadcrumb.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/breadcrumb.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import moment from 'moment'; @@ -12,7 +13,7 @@ const CUSTOM_RENDERERS = { const Breadcrumb = React.createClass({ propTypes: { - crumb: React.PropTypes.object.isRequired + crumb: PropTypes.object.isRequired }, getClassName() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/category.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/category.jsx index 9e0c0f330771f3..1f0bec1139030f 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/category.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/category.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Category = React.createClass({ propTypes: { - value: React.PropTypes.string, - title: React.PropTypes.string, - hideIfEmpty: React.PropTypes.bool + value: PropTypes.string, + title: PropTypes.string, + hideIfEmpty: PropTypes.bool }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/crumbTable.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/crumbTable.jsx index b4d2e8e83e9a93..fc3d19a88bd76f 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/crumbTable.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/crumbTable.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -5,10 +6,10 @@ import Category from './category'; const CrumbTable = React.createClass({ propTypes: { - crumb: React.PropTypes.object, - title: React.PropTypes.string, - kvData: React.PropTypes.object, - summary: React.PropTypes.object + crumb: PropTypes.object, + title: PropTypes.string, + kvData: PropTypes.object, + summary: PropTypes.object }, renderData() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/defaultRenderer.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/defaultRenderer.jsx index 2c555639c1bac0..042d8f996d60b4 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/defaultRenderer.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/defaultRenderer.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import CrumbTable from './crumbTable'; @@ -5,8 +6,8 @@ import SummaryLine from './summaryLine'; const DefaultRenderer = React.createClass({ propTypes: { - crumb: React.PropTypes.object.isRequired, - kvData: React.PropTypes.object + crumb: PropTypes.object.isRequired, + kvData: PropTypes.object }, getTitle() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/errorRenderer.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/errorRenderer.jsx index d637289ad349e1..1134123fe0613b 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/errorRenderer.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/errorRenderer.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import CrumbTable from './crumbTable'; @@ -5,7 +6,7 @@ import SummaryLine from './summaryLine'; const ErrorRenderer = React.createClass({ propTypes: { - crumb: React.PropTypes.object.isRequired + crumb: PropTypes.object.isRequired }, renderUrl(url) { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/httpRenderer.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/httpRenderer.jsx index c76a4b7c4d24c6..61e1518295815c 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/httpRenderer.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/httpRenderer.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import CrumbTable from './crumbTable'; @@ -5,7 +6,7 @@ import SummaryLine from './summaryLine'; const HttpRenderer = React.createClass({ propTypes: { - crumb: React.PropTypes.object.isRequired + crumb: PropTypes.object.isRequired }, renderUrl(url) { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/summaryLine.jsx b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/summaryLine.jsx index 3b9d55e79e2362..9489357876bf59 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/summaryLine.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/breadcrumbs/summaryLine.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; function isOverflowing(el) { @@ -7,7 +8,7 @@ function isOverflowing(el) { const SummaryLine = React.createClass({ propTypes: { - crumb: React.PropTypes.object.isRequired + crumb: PropTypes.object.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/contextLine.jsx b/src/sentry/static/sentry/app/components/events/interfaces/contextLine.jsx index 9aaab10569582b..58a854cc2fe29a 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/contextLine.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/contextLine.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {defined} from '../../../utils'; @@ -22,8 +23,8 @@ const ContextLine = function(props) { }; ContextLine.propTypes = { - line: React.PropTypes.array.isRequired, - isActive: React.PropTypes.bool + line: PropTypes.array.isRequired, + isActive: PropTypes.bool }; export default ContextLine; diff --git a/src/sentry/static/sentry/app/components/events/interfaces/crashContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/crashContent.jsx index 23c77c5262e19b..54f62092875be3 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/crashContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/crashContent.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SentryTypes from '../../../proptypes'; import rawStacktraceContent from './rawStacktraceContent'; @@ -9,11 +10,11 @@ const CrashContent = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - stackView: React.PropTypes.string.isRequired, - stackType: React.PropTypes.string, - newestFirst: React.PropTypes.bool.isRequired, - exception: React.PropTypes.object, - stacktrace: React.PropTypes.object + stackView: PropTypes.string.isRequired, + stackType: PropTypes.string, + newestFirst: PropTypes.bool.isRequired, + exception: PropTypes.object, + stacktrace: PropTypes.object }, renderException() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/crashHeader.jsx b/src/sentry/static/sentry/app/components/events/interfaces/crashHeader.jsx index d341f38ef9975e..5c8933535432f8 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/crashHeader.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/crashHeader.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SentryTypes from '../../../proptypes'; import TooltipMixin from '../../../mixins/tooltip'; @@ -5,17 +6,17 @@ import {t} from '../../../locale'; const CrashHeader = React.createClass({ propTypes: { - title: React.PropTypes.string, - beforeTitle: React.PropTypes.any, + title: PropTypes.string, + beforeTitle: PropTypes.any, group: SentryTypes.Group.isRequired, - platform: React.PropTypes.string, - thread: React.PropTypes.object, - exception: React.PropTypes.object, - stacktrace: React.PropTypes.object, - stackView: React.PropTypes.string.isRequired, - newestFirst: React.PropTypes.bool.isRequired, - stackType: React.PropTypes.string, // 'original', 'minified', or falsy (none) - onChange: React.PropTypes.func + platform: PropTypes.string, + thread: PropTypes.object, + exception: PropTypes.object, + stacktrace: PropTypes.object, + stackView: PropTypes.string.isRequired, + newestFirst: PropTypes.bool.isRequired, + stackType: PropTypes.string, // 'original', 'minified', or falsy (none) + onChange: PropTypes.func }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/events/interfaces/csp.jsx b/src/sentry/static/sentry/app/components/events/interfaces/csp.jsx index 699aa0f9d36f26..a7eab83071a9b9 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/csp.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/csp.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SentryTypes from '../../../proptypes'; @@ -23,8 +24,8 @@ const CSPInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/cspContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/cspContent.jsx index fbe7334081f36b..f881cd1566faac 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/cspContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/cspContent.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {objectToArray} from '../../../utils'; @@ -5,7 +6,7 @@ import KeyValueList from './keyValueList'; const CSPContent = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/cspHelp.jsx b/src/sentry/static/sentry/app/components/events/interfaces/cspHelp.jsx index 09fb802fb75159..30d44d62cb50f3 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/cspHelp.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/cspHelp.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../../../locale'; @@ -128,7 +129,7 @@ function getLink(key) { const CSPHelp = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/debugmeta.jsx b/src/sentry/static/sentry/app/components/events/interfaces/debugmeta.jsx index 90b195ba4bafbb..2596fbb0a78d54 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/debugmeta.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/debugmeta.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SentryTypes from '../../../proptypes'; import EventDataSection from '../eventDataSection'; @@ -9,7 +10,7 @@ const DebugMetaInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, getImageDetail(img, evt) { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/exception.jsx b/src/sentry/static/sentry/app/components/events/interfaces/exception.jsx index f6597fed2b033b..8cd6324d453e6d 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/exception.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/exception.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from '../eventDataSection'; import SentryTypes from '../../../proptypes'; @@ -9,8 +10,8 @@ const ExceptionInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/exceptionContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/exceptionContent.jsx index d2b4fa8bd157a5..b492cfd8ca0e1d 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/exceptionContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/exceptionContent.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {defined} from '../../../utils'; @@ -6,11 +7,11 @@ import ExceptionMechanism from './exceptionMechanism'; const ExceptionContent = React.createClass({ propTypes: { - type: React.PropTypes.oneOf(['original', 'minified']), - values: React.PropTypes.array.isRequired, - view: React.PropTypes.string.isRequired, - platform: React.PropTypes.string, - newestFirst: React.PropTypes.bool + type: PropTypes.oneOf(['original', 'minified']), + values: PropTypes.array.isRequired, + view: PropTypes.string.isRequired, + platform: PropTypes.string, + newestFirst: PropTypes.bool }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/exceptionMechanism.jsx b/src/sentry/static/sentry/app/components/events/interfaces/exceptionMechanism.jsx index fdaaf15f351ff1..7b47506056611c 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/exceptionMechanism.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/exceptionMechanism.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Pills from '../../pills'; import Pill from '../../pill'; const ExceptionMechanism = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - platform: React.PropTypes.string + data: PropTypes.object.isRequired, + platform: PropTypes.string }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/frame.jsx b/src/sentry/static/sentry/app/components/events/interfaces/frame.jsx index 69f30e04b2007f..14f2997953b25e 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/frame.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/frame.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; import classNames from 'classnames'; @@ -21,14 +22,14 @@ export function trimPackage(pkg) { const Frame = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - nextFrame: React.PropTypes.object, - prevFrame: React.PropTypes.object, - platform: React.PropTypes.string, - isExpanded: React.PropTypes.bool, - emptySourceNotation: React.PropTypes.bool, - isOnlyFrame: React.PropTypes.bool, - timesRepeated: React.PropTypes.number + data: PropTypes.object.isRequired, + nextFrame: PropTypes.object, + prevFrame: PropTypes.object, + platform: PropTypes.string, + isExpanded: PropTypes.bool, + emptySourceNotation: PropTypes.bool, + isOnlyFrame: PropTypes.bool, + timesRepeated: PropTypes.number }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/events/interfaces/frameVariables.jsx b/src/sentry/static/sentry/app/components/events/interfaces/frameVariables.jsx index 4c61cf3385b9da..988d181196cb1d 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/frameVariables.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/frameVariables.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {objectToArray} from '../../../utils'; @@ -5,7 +6,7 @@ import KeyValueList from './keyValueList'; const FrameVariables = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, // make sure that clicking on the variables does not actually do diff --git a/src/sentry/static/sentry/app/components/events/interfaces/keyValueList.jsx b/src/sentry/static/sentry/app/components/events/interfaces/keyValueList.jsx index 849ce5fdfa6596..507741615acf15 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/keyValueList.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/keyValueList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -6,11 +7,11 @@ import {deviceNameMapper} from '../../../utils'; const KeyValueList = React.createClass({ propTypes: { - data: React.PropTypes.any.isRequired, - isContextData: React.PropTypes.bool, - isSorted: React.PropTypes.bool, - onClick: React.PropTypes.func, - raw: React.PropTypes.bool + data: PropTypes.any.isRequired, + isContextData: PropTypes.bool, + isSorted: PropTypes.bool, + onClick: PropTypes.func, + raw: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/message.jsx b/src/sentry/static/sentry/app/components/events/interfaces/message.jsx index 260b1b4cfed014..9312479d48ac36 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/message.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/message.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import EventDataSection from '../eventDataSection'; @@ -9,8 +10,8 @@ const MessageInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/rawExceptionContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/rawExceptionContent.jsx index b78ec2389297d3..2a6f86500db572 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/rawExceptionContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/rawExceptionContent.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import rawStacktraceContent from './rawStacktraceContent'; import ApiMixin from '../../../mixins/apiMixin'; @@ -7,10 +8,10 @@ import ClippedBox from '../../clippedBox'; const RawExceptionContent = React.createClass({ propTypes: { - type: React.PropTypes.oneOf(['original', 'minified']), - platform: React.PropTypes.string, - eventId: React.PropTypes.string, - values: React.PropTypes.array.isRequired + type: PropTypes.oneOf(['original', 'minified']), + platform: PropTypes.string, + eventId: PropTypes.string, + values: PropTypes.array.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/events/interfaces/request.jsx b/src/sentry/static/sentry/app/components/events/interfaces/request.jsx index 1f771d4925dfc3..d403d93b06e116 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/request.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/request.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from '../eventDataSection'; import SentryTypes from '../../../proptypes'; @@ -12,9 +13,9 @@ const RequestInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - isShare: React.PropTypes.bool + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + isShare: PropTypes.bool }, contextTypes: { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/richHttpContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/richHttpContent.jsx index ae81f7040a9299..a0a3c76dc236d9 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/richHttpContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/richHttpContent.jsx @@ -5,12 +5,13 @@ import KeyValueList from './keyValueList'; import ContextData from '../../contextData'; import {objectIsEmpty} from '../../../utils'; +import PropTypes from 'prop-types'; import queryString from 'query-string'; import {t} from '../../../locale'; const RichHttpContent = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired + data: PropTypes.object.isRequired }, /** diff --git a/src/sentry/static/sentry/app/components/events/interfaces/stacktrace.jsx b/src/sentry/static/sentry/app/components/events/interfaces/stacktrace.jsx index 0a24b7fa4d06b2..46495d31cadf00 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/stacktrace.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/stacktrace.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ConfigStore from '../../../stores/configStore'; import GroupEventDataSection from '../eventDataSection'; @@ -25,9 +26,9 @@ const StacktraceInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - platform: React.PropTypes.string + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + platform: PropTypes.string }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/stacktraceContent.jsx b/src/sentry/static/sentry/app/components/events/interfaces/stacktraceContent.jsx index e0720acb37d44f..f9a1f19d74c08f 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/stacktraceContent.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/stacktraceContent.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; //import GroupEventDataSection from "../eventDataSection"; import Frame from './frame'; @@ -6,11 +7,11 @@ import OrganizationState from '../../../mixins/organizationState'; const StacktraceContent = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - includeSystemFrames: React.PropTypes.bool, - expandFirstFrame: React.PropTypes.bool, - platform: React.PropTypes.string, - newestFirst: React.PropTypes.bool + data: PropTypes.object.isRequired, + includeSystemFrames: PropTypes.bool, + expandFirstFrame: PropTypes.bool, + platform: PropTypes.string, + newestFirst: PropTypes.bool }, mixins: [OrganizationState], diff --git a/src/sentry/static/sentry/app/components/events/interfaces/template.jsx b/src/sentry/static/sentry/app/components/events/interfaces/template.jsx index e4e2e2d350dd71..985914ab5ff178 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/template.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/template.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from '../eventDataSection'; import SentryTypes from '../../../proptypes'; @@ -8,8 +9,8 @@ const TemplateInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/interfaces/threads.jsx b/src/sentry/static/sentry/app/components/events/interfaces/threads.jsx index 7219eb5ff192d8..1821ac2e89f295 100644 --- a/src/sentry/static/sentry/app/components/events/interfaces/threads.jsx +++ b/src/sentry/static/sentry/app/components/events/interfaces/threads.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import GroupEventDataSection from '../eventDataSection'; import SentryTypes from '../../../proptypes'; @@ -125,12 +126,12 @@ const Thread = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - data: React.PropTypes.object.isRequired, - stackView: React.PropTypes.string, - stackType: React.PropTypes.string, - newestFirst: React.PropTypes.bool, - exception: React.PropTypes.object, - stacktrace: React.PropTypes.object + data: PropTypes.object.isRequired, + stackView: PropTypes.string, + stackType: PropTypes.string, + newestFirst: PropTypes.bool, + exception: PropTypes.object, + stacktrace: PropTypes.object }, renderMissingStacktrace() { @@ -195,9 +196,9 @@ const ThreadsInterface = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired, - type: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - platform: React.PropTypes.string + type: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + platform: PropTypes.string }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/events/userReport.jsx b/src/sentry/static/sentry/app/components/events/userReport.jsx index c9598ec0cb4f6f..aa2bfbc80ae6dd 100644 --- a/src/sentry/static/sentry/app/components/events/userReport.jsx +++ b/src/sentry/static/sentry/app/components/events/userReport.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from '../../components/avatar'; import TimeSince from '../../components/timeSince'; @@ -5,7 +6,7 @@ import utils from '../../utils'; const EventUserReport = React.createClass({ propTypes: { - event: React.PropTypes.object.isRequired + event: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/fileChange.jsx b/src/sentry/static/sentry/app/components/fileChange.jsx index 1d493b69b30535..203a1d203dd8fe 100644 --- a/src/sentry/static/sentry/app/components/fileChange.jsx +++ b/src/sentry/static/sentry/app/components/fileChange.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from '../components/avatar'; import IconFileGeneric from '../icons/icon-file-generic'; @@ -7,9 +8,9 @@ import ApiMixin from '../mixins/apiMixin'; const FileChange = React.createClass({ propTypes: { - filename: React.PropTypes.string.isRequired, - authors: React.PropTypes.array.isRequired, - types: React.PropTypes.object.isRequired + filename: PropTypes.string.isRequired, + authors: PropTypes.array.isRequired, + types: PropTypes.object.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/fileSize.jsx b/src/sentry/static/sentry/app/components/fileSize.jsx index 3613df451972b1..6f7c1044153612 100644 --- a/src/sentry/static/sentry/app/components/fileSize.jsx +++ b/src/sentry/static/sentry/app/components/fileSize.jsx @@ -1,9 +1,10 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {formatBytes} from '../utils'; const FileSize = React.createClass({ propTypes: { - bytes: React.PropTypes.number.isRequired + bytes: PropTypes.number.isRequired }, render: function() { diff --git a/src/sentry/static/sentry/app/components/forms/apiForm.jsx b/src/sentry/static/sentry/app/components/forms/apiForm.jsx index e0f7d4cfa944a2..86298fc35cca0f 100644 --- a/src/sentry/static/sentry/app/components/forms/apiForm.jsx +++ b/src/sentry/static/sentry/app/components/forms/apiForm.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import PropTypes from 'prop-types'; import {Client} from '../../api'; import IndicatorStore from '../../stores/indicatorStore'; @@ -9,9 +9,9 @@ import {t} from '../../locale'; export default class ApiForm extends Form { static propTypes = { ...Form.propTypes, - onSubmit: React.PropTypes.func, - apiMethod: React.PropTypes.string.isRequired, - apiEndpoint: React.PropTypes.string.isRequired + onSubmit: PropTypes.func, + apiMethod: PropTypes.string.isRequired, + apiEndpoint: PropTypes.string.isRequired }; constructor(props, context) { diff --git a/src/sentry/static/sentry/app/components/forms/form.jsx b/src/sentry/static/sentry/app/components/forms/form.jsx index dbcb5ec841d725..b6dab4940595af 100644 --- a/src/sentry/static/sentry/app/components/forms/form.jsx +++ b/src/sentry/static/sentry/app/components/forms/form.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -6,17 +7,17 @@ import {t} from '../../locale'; export default class Form extends React.Component { static propTypes = { - cancelLabel: React.PropTypes.string, - onCancel: React.PropTypes.func, - onSubmit: React.PropTypes.func.isRequired, - onSubmitSuccess: React.PropTypes.func, - onSubmitError: React.PropTypes.func, - submitDisabled: React.PropTypes.bool, - submitLabel: React.PropTypes.string, - footerClass: React.PropTypes.string, - extraButton: React.PropTypes.element, - initialData: React.PropTypes.object, - requireChanges: React.PropTypes.bool + cancelLabel: PropTypes.string, + onCancel: PropTypes.func, + onSubmit: PropTypes.func.isRequired, + onSubmitSuccess: PropTypes.func, + onSubmitError: PropTypes.func, + submitDisabled: PropTypes.bool, + submitLabel: PropTypes.string, + footerClass: PropTypes.string, + extraButton: PropTypes.element, + initialData: PropTypes.object, + requireChanges: PropTypes.bool }; static defaultProps = { @@ -29,7 +30,7 @@ export default class Form extends React.Component { }; static childContextTypes = { - form: React.PropTypes.object.isRequired + form: PropTypes.object.isRequired }; constructor(props, context) { diff --git a/src/sentry/static/sentry/app/components/forms/formField.jsx b/src/sentry/static/sentry/app/components/forms/formField.jsx index 5bdcf96d2b556f..32e490fe924d04 100644 --- a/src/sentry/static/sentry/app/components/forms/formField.jsx +++ b/src/sentry/static/sentry/app/components/forms/formField.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import idx from 'idx'; @@ -5,19 +6,19 @@ import {defined} from '../../utils'; export default class FormField extends React.Component { static propTypes = { - name: React.PropTypes.string.isRequired, + name: PropTypes.string.isRequired, - label: React.PropTypes.string, - defaultValue: React.PropTypes.any, - disabled: React.PropTypes.bool, - disabledReason: React.PropTypes.string, - help: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.element]), - required: React.PropTypes.bool, + label: PropTypes.string, + defaultValue: PropTypes.any, + disabled: PropTypes.bool, + disabledReason: PropTypes.string, + help: PropTypes.oneOfType([PropTypes.string, PropTypes.element]), + required: PropTypes.bool, // the following should only be used without form context - onChange: React.PropTypes.func, - error: React.PropTypes.string, - value: React.PropTypes.any + onChange: PropTypes.func, + error: PropTypes.string, + value: PropTypes.any }; static defaultProps = { @@ -26,7 +27,7 @@ export default class FormField extends React.Component { }; static contextTypes = { - form: React.PropTypes.object + form: PropTypes.object }; constructor(props, context) { diff --git a/src/sentry/static/sentry/app/components/forms/genericField.jsx b/src/sentry/static/sentry/app/components/forms/genericField.jsx index 883428f6b4f6de..b5ea36d193f283 100644 --- a/src/sentry/static/sentry/app/components/forms/genericField.jsx +++ b/src/sentry/static/sentry/app/components/forms/genericField.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {defined} from '../../utils'; @@ -66,11 +67,11 @@ class GenericField extends React.Component { } GenericField.propTypes = { - config: React.PropTypes.object.isRequired, - formData: React.PropTypes.object, - formErrors: React.PropTypes.object, - formState: React.PropTypes.string.isRequired, - onChange: React.PropTypes.func + config: PropTypes.object.isRequired, + formData: PropTypes.object, + formErrors: PropTypes.object, + formState: PropTypes.string.isRequired, + onChange: PropTypes.func }; export default GenericField; diff --git a/src/sentry/static/sentry/app/components/forms/inputField.jsx b/src/sentry/static/sentry/app/components/forms/inputField.jsx index 71b8b0f3993792..831d91b8fb7fa6 100644 --- a/src/sentry/static/sentry/app/components/forms/inputField.jsx +++ b/src/sentry/static/sentry/app/components/forms/inputField.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import FormField from './formField'; @@ -6,7 +7,7 @@ import FormField from './formField'; export default class InputField extends FormField { static propTypes = { ...FormField.propTypes, - placeholder: React.PropTypes.string + placeholder: PropTypes.string }; // XXX(dcramer): this comes from TooltipMixin diff --git a/src/sentry/static/sentry/app/components/forms/multipleCheckboxField.jsx b/src/sentry/static/sentry/app/components/forms/multipleCheckboxField.jsx index 73426c1797cb2d..0c91983c59f7e2 100644 --- a/src/sentry/static/sentry/app/components/forms/multipleCheckboxField.jsx +++ b/src/sentry/static/sentry/app/components/forms/multipleCheckboxField.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import FormField from './formField'; @@ -6,7 +7,7 @@ import FormField from './formField'; export default class MultipleCheckboxField extends FormField { static propTypes = { ...FormField.propTypes, - choices: React.PropTypes.array.isRequired + choices: PropTypes.array.isRequired }; // XXX(dcramer): this comes from TooltipMixin diff --git a/src/sentry/static/sentry/app/components/forms/numberField.jsx b/src/sentry/static/sentry/app/components/forms/numberField.jsx index 6a1b3c20da3d1d..529fb6d3527e95 100644 --- a/src/sentry/static/sentry/app/components/forms/numberField.jsx +++ b/src/sentry/static/sentry/app/components/forms/numberField.jsx @@ -1,11 +1,11 @@ -import React from 'react'; +import PropTypes from 'prop-types'; import InputField from './inputField'; export default class NumberField extends InputField { static propTypes = { ...InputField.propTypes, - min: React.PropTypes.number, - max: React.PropTypes.number + min: PropTypes.number, + max: PropTypes.number }; coerceValue(value) { diff --git a/src/sentry/static/sentry/app/components/forms/passwordField.jsx b/src/sentry/static/sentry/app/components/forms/passwordField.jsx index 324e52f4725393..b3cb033c03c886 100644 --- a/src/sentry/static/sentry/app/components/forms/passwordField.jsx +++ b/src/sentry/static/sentry/app/components/forms/passwordField.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import InputField from './inputField'; import FormState from './state'; @@ -7,8 +8,8 @@ import FormState from './state'; export default class PasswordField extends InputField { static propTypes = { ...InputField.propTypes, - hasSavedValue: React.PropTypes.bool, - prefix: React.PropTypes.string + hasSavedValue: PropTypes.bool, + prefix: PropTypes.string }; static defaultProps = { diff --git a/src/sentry/static/sentry/app/components/forms/rangeField.jsx b/src/sentry/static/sentry/app/components/forms/rangeField.jsx index fbf08a3b2c7a69..dcbb9bd9647502 100644 --- a/src/sentry/static/sentry/app/components/forms/rangeField.jsx +++ b/src/sentry/static/sentry/app/components/forms/rangeField.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import PropTypes from 'prop-types'; import jQuery from 'jquery'; import ReactDOM from 'react-dom'; @@ -12,11 +12,11 @@ export default class RangeField extends InputField { static propTypes = { ...InputField.propTypes, - min: React.PropTypes.number, - max: React.PropTypes.number, - step: React.PropTypes.number, - snap: React.PropTypes.bool, - allowedValues: React.PropTypes.arrayOf(React.PropTypes.number) + min: PropTypes.number, + max: PropTypes.number, + step: PropTypes.number, + snap: PropTypes.bool, + allowedValues: PropTypes.arrayOf(PropTypes.number) }; static defaultProps = { diff --git a/src/sentry/static/sentry/app/components/forms/select2Field.jsx b/src/sentry/static/sentry/app/components/forms/select2Field.jsx index 67f46d18f8b1c9..25182781beb223 100644 --- a/src/sentry/static/sentry/app/components/forms/select2Field.jsx +++ b/src/sentry/static/sentry/app/components/forms/select2Field.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import InputField from './inputField'; @@ -62,11 +63,11 @@ class Select2Field extends InputField { Select2Field.propTypes = Object.assign( { - choices: React.PropTypes.array.isRequired, - allowClear: React.PropTypes.bool, - allowEmpty: React.PropTypes.bool, - multiple: React.PropTypes.bool, - escapeMarkup: React.PropTypes.bool + choices: PropTypes.array.isRequired, + allowClear: PropTypes.bool, + allowEmpty: PropTypes.bool, + multiple: PropTypes.bool, + escapeMarkup: PropTypes.bool }, InputField.propTypes ); diff --git a/src/sentry/static/sentry/app/components/forms/select2FieldAutocomplete.jsx b/src/sentry/static/sentry/app/components/forms/select2FieldAutocomplete.jsx index c4c0e43f0c45cc..63d28a8fc15791 100644 --- a/src/sentry/static/sentry/app/components/forms/select2FieldAutocomplete.jsx +++ b/src/sentry/static/sentry/app/components/forms/select2FieldAutocomplete.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Select2Field from './select2Field'; @@ -66,14 +67,14 @@ Select2FieldAutocomplete.defaultProps = Object.assign( ); Select2FieldAutocomplete.propTypes = Object.assign({}, Select2Field.propTypes, { - ajaxDelay: React.PropTypes.number, - minimumInputLength: React.PropTypes.number, - formatResult: React.PropTypes.func, - formatSelection: React.PropTypes.func, - onResults: React.PropTypes.func, - onQuery: React.PropTypes.func, - url: React.PropTypes.string.isRequired, - id: React.PropTypes.any + ajaxDelay: PropTypes.number, + minimumInputLength: PropTypes.number, + formatResult: PropTypes.func, + formatSelection: PropTypes.func, + onResults: PropTypes.func, + onQuery: PropTypes.func, + url: PropTypes.string.isRequired, + id: PropTypes.any }); delete Select2FieldAutocomplete.propTypes.choices; diff --git a/src/sentry/static/sentry/app/components/group/issuePluginActions.jsx b/src/sentry/static/sentry/app/components/group/issuePluginActions.jsx index 0d759eb7626b4d..9abef1c38d6917 100644 --- a/src/sentry/static/sentry/app/components/group/issuePluginActions.jsx +++ b/src/sentry/static/sentry/app/components/group/issuePluginActions.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import ApiMixin from '../../mixins/apiMixin'; @@ -10,7 +11,7 @@ import {toTitleCase} from '../../utils'; const IssuePluginActions = React.createClass({ propTypes: { - plugin: React.PropTypes.object.isRequired + plugin: PropTypes.object.isRequired }, mixins: [ApiMixin, GroupState], diff --git a/src/sentry/static/sentry/app/components/group/participants.jsx b/src/sentry/static/sentry/app/components/group/participants.jsx index 8da026602baa7d..a389fdcaa47a9e 100644 --- a/src/sentry/static/sentry/app/components/group/participants.jsx +++ b/src/sentry/static/sentry/app/components/group/participants.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from '../avatar'; @@ -6,7 +7,7 @@ import {userDisplayName} from '../../utils/formatters'; const GroupParticipants = React.createClass({ propTypes: { - participants: React.PropTypes.array.isRequired + participants: PropTypes.array.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/group/releaseChart.jsx b/src/sentry/static/sentry/app/components/group/releaseChart.jsx index 6ce0ab95399287..60244f4deef230 100644 --- a/src/sentry/static/sentry/app/components/group/releaseChart.jsx +++ b/src/sentry/static/sentry/app/components/group/releaseChart.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import StackedBarChart from '../stackedBarChart'; @@ -8,16 +9,16 @@ import {defined, escape, intcomma} from '../../utils'; const GroupReleaseChart = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, - release: React.PropTypes.shape({ - version: React.PropTypes.string.isRequired + release: PropTypes.shape({ + version: PropTypes.string.isRequired }), - releaseStats: React.PropTypes.object, - statsPeriod: React.PropTypes.string.isRequired, - environment: React.PropTypes.string, - environmentStats: React.PropTypes.object, - firstSeen: React.PropTypes.string, - lastSeen: React.PropTypes.string, - title: React.PropTypes.string + releaseStats: PropTypes.object, + statsPeriod: PropTypes.string.isRequired, + environment: PropTypes.string, + environmentStats: PropTypes.object, + firstSeen: PropTypes.string, + lastSeen: PropTypes.string, + title: PropTypes.string }, getInitialState(props) { diff --git a/src/sentry/static/sentry/app/components/group/releaseStats.jsx b/src/sentry/static/sentry/app/components/group/releaseStats.jsx index fbb483e3440626..792209be994d4d 100644 --- a/src/sentry/static/sentry/app/components/group/releaseStats.jsx +++ b/src/sentry/static/sentry/app/components/group/releaseStats.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {browserHistory} from 'react-router'; @@ -27,8 +28,8 @@ const PRODUCTION_ENV_NAMES = new Set([ // changes const GroupReleaseStats = React.createClass({ propTypes: { - defaultEnvironment: React.PropTypes.string, - group: React.PropTypes.object + defaultEnvironment: PropTypes.string, + group: PropTypes.object }, mixins: [ApiMixin, GroupState], diff --git a/src/sentry/static/sentry/app/components/group/seenInfo.jsx b/src/sentry/static/sentry/app/components/group/seenInfo.jsx index 7fff041e409da0..cefaf3ea8ad63d 100644 --- a/src/sentry/static/sentry/app/components/group/seenInfo.jsx +++ b/src/sentry/static/sentry/app/components/group/seenInfo.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DateTime from '../../components/dateTime'; import TimeSince from '../../components/timeSince'; @@ -10,19 +11,19 @@ import {t} from '../../locale'; const SeenInfo = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - date: React.PropTypes.any, - dateGlobal: React.PropTypes.any, - release: React.PropTypes.shape({ - version: React.PropTypes.string.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + date: PropTypes.any, + dateGlobal: PropTypes.any, + release: PropTypes.shape({ + version: PropTypes.string.isRequired }), - environment: React.PropTypes.string, - hasRelease: React.PropTypes.bool.isRequired + environment: PropTypes.string, + hasRelease: PropTypes.bool.isRequired }, contextTypes: { - organization: React.PropTypes.object + organization: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/group/sidebar.jsx b/src/sentry/static/sentry/app/components/group/sidebar.jsx index bcfba28514616d..fd64071d0c09cf 100644 --- a/src/sentry/static/sentry/app/components/group/sidebar.jsx +++ b/src/sentry/static/sentry/app/components/group/sidebar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -12,12 +13,12 @@ import {t, tct} from '../../locale'; const GroupSidebar = React.createClass({ propTypes: { - group: React.PropTypes.object, - event: React.PropTypes.object + group: PropTypes.object, + event: PropTypes.object }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin, GroupState], diff --git a/src/sentry/static/sentry/app/components/group/suggestedOwners.jsx b/src/sentry/static/sentry/app/components/group/suggestedOwners.jsx index e86d3f131505e0..9ed8b35590bc06 100644 --- a/src/sentry/static/sentry/app/components/group/suggestedOwners.jsx +++ b/src/sentry/static/sentry/app/components/group/suggestedOwners.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOMServer from 'react-dom/server'; import moment from 'moment'; @@ -10,7 +11,7 @@ import {t} from '../../locale'; const SuggestedOwners = React.createClass({ propTypes: { - event: React.PropTypes.object + event: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/group/tagDistributionMeter.jsx b/src/sentry/static/sentry/app/components/group/tagDistributionMeter.jsx index 30b843f041bb78..8fa7fb01fa7cf2 100644 --- a/src/sentry/static/sentry/app/components/group/tagDistributionMeter.jsx +++ b/src/sentry/static/sentry/app/components/group/tagDistributionMeter.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import ApiMixin from '../../mixins/apiMixin'; @@ -9,10 +10,10 @@ import {t} from '../../locale'; const TagDistributionMeter = React.createClass({ propTypes: { group: SentryTypes.Group.isRequired, - tag: React.PropTypes.string.isRequired, - name: React.PropTypes.string, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + tag: PropTypes.string.isRequired, + name: PropTypes.string, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/groupList.jsx b/src/sentry/static/sentry/app/components/groupList.jsx index eb48712576068a..0ef36c8c44f797 100644 --- a/src/sentry/static/sentry/app/components/groupList.jsx +++ b/src/sentry/static/sentry/app/components/groupList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import jQuery from 'jquery'; @@ -14,15 +15,15 @@ import {t} from '../locale'; const GroupList = React.createClass({ propTypes: { - query: React.PropTypes.string.isRequired, - canSelectGroups: React.PropTypes.bool, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - bulkActions: React.PropTypes.bool.isRequired + query: PropTypes.string.isRequired, + canSelectGroups: PropTypes.bool, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + bulkActions: PropTypes.bool.isRequired }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ProjectState, Reflux.listenTo(GroupStore, 'onGroupChange'), ApiMixin], diff --git a/src/sentry/static/sentry/app/components/groupTombstones.jsx b/src/sentry/static/sentry/app/components/groupTombstones.jsx index 72520c3ba66fe3..196d9ec54c1142 100644 --- a/src/sentry/static/sentry/app/components/groupTombstones.jsx +++ b/src/sentry/static/sentry/app/components/groupTombstones.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -14,10 +15,10 @@ import {t} from '../locale'; const GroupTombstoneRow = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - undiscard: React.PropTypes.func.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + data: PropTypes.object.isRequired, + undiscard: PropTypes.func.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, mixins: [ @@ -69,11 +70,11 @@ const GroupTombstoneRow = React.createClass({ const GroupTombstones = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - tombstones: React.PropTypes.array.isRequired, - tombstoneError: React.PropTypes.bool.isRequired, - fetchData: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + tombstones: PropTypes.array.isRequired, + tombstoneError: PropTypes.bool.isRequired, + fetchData: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/inactivePlugins.jsx b/src/sentry/static/sentry/app/components/inactivePlugins.jsx index 10d15a50c327d8..ba0dbe197f64f3 100644 --- a/src/sentry/static/sentry/app/components/inactivePlugins.jsx +++ b/src/sentry/static/sentry/app/components/inactivePlugins.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../locale'; export default React.createClass({ propTypes: { - plugins: React.PropTypes.array.isRequired, - onEnablePlugin: React.PropTypes.func.isRequired + plugins: PropTypes.array.isRequired, + onEnablePlugin: PropTypes.func.isRequired }, enablePlugin(plugin) { diff --git a/src/sentry/static/sentry/app/components/internalStatChart.jsx b/src/sentry/static/sentry/app/components/internalStatChart.jsx index f103110b30644e..efbc5f6b5ac5de 100644 --- a/src/sentry/static/sentry/app/components/internalStatChart.jsx +++ b/src/sentry/static/sentry/app/components/internalStatChart.jsx @@ -1,4 +1,6 @@ /*eslint getsentry/jsx-needs-il8n:0*/ +import PropTypes from 'prop-types'; + import React from 'react'; import _ from 'lodash'; @@ -9,11 +11,11 @@ import LoadingIndicator from '../components/loadingIndicator'; export default React.createClass({ propTypes: { - since: React.PropTypes.number.isRequired, - resolution: React.PropTypes.string.isRequired, - stat: React.PropTypes.string.isRequired, - label: React.PropTypes.string, - height: React.PropTypes.number + since: PropTypes.number.isRequired, + resolution: PropTypes.string.isRequired, + stat: PropTypes.string.isRequired, + label: PropTypes.string, + height: PropTypes.number }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/issueLink.jsx b/src/sentry/static/sentry/app/components/issueLink.jsx index 3843d77eea72e9..e3f3e1298a2d6c 100644 --- a/src/sentry/static/sentry/app/components/issueLink.jsx +++ b/src/sentry/static/sentry/app/components/issueLink.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -8,10 +9,10 @@ import TimeSince from './timeSince'; export default React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - issue: React.PropTypes.object.isRequired, - card: React.PropTypes.bool + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + issue: PropTypes.object.isRequired, + card: PropTypes.bool }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/issueList.jsx b/src/sentry/static/sentry/app/components/issueList.jsx index 82923723f929eb..59c40a7e209894 100644 --- a/src/sentry/static/sentry/app/components/issueList.jsx +++ b/src/sentry/static/sentry/app/components/issueList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -9,12 +10,12 @@ import {t} from '../locale'; const IssueList = React.createClass({ propTypes: { - endpoint: React.PropTypes.string.isRequired, - query: React.PropTypes.object, - pagination: React.PropTypes.bool, - renderEmpty: React.PropTypes.func, - statsPeriod: React.PropTypes.string, - showActions: React.PropTypes.bool + endpoint: PropTypes.string.isRequired, + query: PropTypes.object, + pagination: PropTypes.bool, + renderEmpty: PropTypes.func, + statsPeriod: PropTypes.string, + showActions: PropTypes.bool }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/issues/snoozeAction.jsx b/src/sentry/static/sentry/app/components/issues/snoozeAction.jsx index fb1c4b549ab152..171a444c1c1eaf 100644 --- a/src/sentry/static/sentry/app/components/issues/snoozeAction.jsx +++ b/src/sentry/static/sentry/app/components/issues/snoozeAction.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import {t} from '../../locale'; @@ -11,9 +12,9 @@ const Snooze = { const SnoozeAction = React.createClass({ propTypes: { - disabled: React.PropTypes.bool, - onSnooze: React.PropTypes.func.isRequired, - tooltip: React.PropTypes.string + disabled: PropTypes.bool, + onSnooze: PropTypes.func.isRequired, + tooltip: PropTypes.string }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/lastCommit.jsx b/src/sentry/static/sentry/app/components/lastCommit.jsx index 4e57cc8f28a8f8..261d8418eea9d0 100644 --- a/src/sentry/static/sentry/app/components/lastCommit.jsx +++ b/src/sentry/static/sentry/app/components/lastCommit.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from './avatar'; @@ -7,8 +8,8 @@ import {t} from '../locale'; const LastCommit = React.createClass({ propTypes: { - commit: React.PropTypes.object.isRequired, - headerClass: React.PropTypes.string + commit: PropTypes.object.isRequired, + headerClass: PropTypes.string }, renderMessage(message) { diff --git a/src/sentry/static/sentry/app/components/latestDeployOrReleaseTime.jsx b/src/sentry/static/sentry/app/components/latestDeployOrReleaseTime.jsx index 48cd51ec15f03c..aa805ecb664892 100644 --- a/src/sentry/static/sentry/app/components/latestDeployOrReleaseTime.jsx +++ b/src/sentry/static/sentry/app/components/latestDeployOrReleaseTime.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; import TooltipMixin from '../mixins/tooltip'; @@ -6,8 +7,8 @@ import {t} from '../locale'; const LatestDeployOrReleaseTime = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - release: React.PropTypes.object.isRequired + orgId: PropTypes.string.isRequired, + release: PropTypes.object.isRequired }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/letterAvatar.jsx b/src/sentry/static/sentry/app/components/letterAvatar.jsx index ea458b96a9253f..50c16ada64573c 100644 --- a/src/sentry/static/sentry/app/components/letterAvatar.jsx +++ b/src/sentry/static/sentry/app/components/letterAvatar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; /** @@ -7,8 +8,8 @@ import React from 'react'; const LetterAvatar = React.createClass({ propTypes: { - identifier: React.PropTypes.string.isRequired, - displayName: React.PropTypes.string.isRequired + identifier: PropTypes.string.isRequired, + displayName: PropTypes.string.isRequired }, COLORS: [ diff --git a/src/sentry/static/sentry/app/components/link.jsx b/src/sentry/static/sentry/app/components/link.jsx index c44c2e318a5cc1..cdea60a16a95f5 100644 --- a/src/sentry/static/sentry/app/components/link.jsx +++ b/src/sentry/static/sentry/app/components/link.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link as RouterLink} from 'react-router'; import _ from 'lodash'; @@ -8,11 +9,11 @@ import _ from 'lodash'; */ const Link = React.createClass({ propTypes: { - to: React.PropTypes.string.isRequired + to: PropTypes.string.isRequired }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/components/linkWithConfirmation.jsx b/src/sentry/static/sentry/app/components/linkWithConfirmation.jsx index 561539c871d4dd..35cf9da6fdc19d 100644 --- a/src/sentry/static/sentry/app/components/linkWithConfirmation.jsx +++ b/src/sentry/static/sentry/app/components/linkWithConfirmation.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -5,10 +6,10 @@ import {t} from '../locale'; const LinkWithConfirmation = React.createClass({ propTypes: { - disabled: React.PropTypes.bool, - message: React.PropTypes.string.isRequired, - title: React.PropTypes.string.isRequired, - onConfirm: React.PropTypes.func.isRequired + disabled: PropTypes.bool, + message: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + onConfirm: PropTypes.func.isRequired }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/listLink.jsx b/src/sentry/static/sentry/app/components/listLink.jsx index 3e79f8b8b7a6c1..bea66acceae2ff 100644 --- a/src/sentry/static/sentry/app/components/listLink.jsx +++ b/src/sentry/static/sentry/app/components/listLink.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; import {Link} from 'react-router'; @@ -7,20 +8,20 @@ const ListLink = React.createClass({ displayName: 'ListLink', propTypes: { - activeClassName: React.PropTypes.string.isRequired, - to: React.PropTypes.string.isRequired, - query: React.PropTypes.object, - onClick: React.PropTypes.func, - index: React.PropTypes.bool, + activeClassName: PropTypes.string.isRequired, + to: PropTypes.string.isRequired, + query: PropTypes.object, + onClick: PropTypes.func, + index: PropTypes.bool, // If supplied by parent component, decides whether link element // is "active" or not ... overriding default behavior of strict // route matching - isActive: React.PropTypes.func + isActive: PropTypes.func }, contextTypes: { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/loadingError.jsx b/src/sentry/static/sentry/app/components/loadingError.jsx index 8330282ce7f385..9d6932404cbbe1 100644 --- a/src/sentry/static/sentry/app/components/loadingError.jsx +++ b/src/sentry/static/sentry/app/components/loadingError.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../locale'; const LoadingError = React.createClass({ propTypes: { - onRetry: React.PropTypes.func, - message: React.PropTypes.string + onRetry: PropTypes.func, + message: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/loadingIndicator.jsx b/src/sentry/static/sentry/app/components/loadingIndicator.jsx index a471bd02a4368a..422fd5ffefed67 100644 --- a/src/sentry/static/sentry/app/components/loadingIndicator.jsx +++ b/src/sentry/static/sentry/app/components/loadingIndicator.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; @@ -18,8 +19,8 @@ function LoadingIndicator(props) { } LoadingIndicator.propTypes = { - mini: React.PropTypes.bool, - triangle: React.PropTypes.bool + mini: PropTypes.bool, + triangle: PropTypes.bool }; export default LoadingIndicator; diff --git a/src/sentry/static/sentry/app/components/menuItem.jsx b/src/sentry/static/sentry/app/components/menuItem.jsx index 8dbe6119aa3097..d9498087b290bd 100644 --- a/src/sentry/static/sentry/app/components/menuItem.jsx +++ b/src/sentry/static/sentry/app/components/menuItem.jsx @@ -1,23 +1,24 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import classNames from 'classnames'; const MenuItem = React.createClass({ propTypes: { - header: React.PropTypes.bool, - divider: React.PropTypes.bool, - title: React.PropTypes.string, - onSelect: React.PropTypes.func, - eventKey: React.PropTypes.any, - isActive: React.PropTypes.bool, - noAnchor: React.PropTypes.bool, + header: PropTypes.bool, + divider: PropTypes.bool, + title: PropTypes.string, + onSelect: PropTypes.func, + eventKey: PropTypes.any, + isActive: PropTypes.bool, + noAnchor: PropTypes.bool, // basic link - href: React.PropTypes.string, + href: PropTypes.string, // router link - to: React.PropTypes.string, - query: React.PropTypes.object, - linkClassName: React.PropTypes.string, - onClick: React.PropTypes.func + to: PropTypes.string, + query: PropTypes.object, + linkClassName: PropTypes.string, + onClick: PropTypes.func }, handleClick(e) { diff --git a/src/sentry/static/sentry/app/components/missingProjectMembership.jsx b/src/sentry/static/sentry/app/components/missingProjectMembership.jsx index dc1c713635361c..08b488ced45e11 100644 --- a/src/sentry/static/sentry/app/components/missingProjectMembership.jsx +++ b/src/sentry/static/sentry/app/components/missingProjectMembership.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AlertActions from '../actions/alertActions'; @@ -6,8 +7,8 @@ import {t} from '../locale'; const MissingProjectMembership = React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired, - team: React.PropTypes.object.isRequired + organization: PropTypes.object.isRequired, + team: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/mutedBox.jsx b/src/sentry/static/sentry/app/components/mutedBox.jsx index 4c0b6942b4b7c4..5b65712f8feadb 100644 --- a/src/sentry/static/sentry/app/components/mutedBox.jsx +++ b/src/sentry/static/sentry/app/components/mutedBox.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -7,7 +8,7 @@ import {t} from '../locale'; export default React.createClass({ propTypes: { - statusDetails: React.PropTypes.object.isRequired + statusDetails: PropTypes.object.isRequired }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/organizationIssueList.jsx b/src/sentry/static/sentry/app/components/organizationIssueList.jsx index 2159016f5e4a39..56b2de11569dcd 100644 --- a/src/sentry/static/sentry/app/components/organizationIssueList.jsx +++ b/src/sentry/static/sentry/app/components/organizationIssueList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -8,9 +9,9 @@ import {t} from '../locale'; const OrganizationIssueList = React.createClass({ propTypes: { - title: React.PropTypes.string, - endpoint: React.PropTypes.string.isRequired, - pageSize: React.PropTypes.number + title: PropTypes.string, + endpoint: PropTypes.string.isRequired, + pageSize: PropTypes.number }, getInitialState() { diff --git a/src/sentry/static/sentry/app/components/organizations/homeSidebar.jsx b/src/sentry/static/sentry/app/components/organizations/homeSidebar.jsx index 21cf4b9fa10c8a..e6e2b3b2c5c765 100644 --- a/src/sentry/static/sentry/app/components/organizations/homeSidebar.jsx +++ b/src/sentry/static/sentry/app/components/organizations/homeSidebar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ListLink from '../listLink'; import OrganizationState from '../../mixins/organizationState'; @@ -6,7 +7,7 @@ import {t} from '../../locale'; const HomeSidebar = React.createClass({ contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [OrganizationState], diff --git a/src/sentry/static/sentry/app/components/pagination.jsx b/src/sentry/static/sentry/app/components/pagination.jsx index 21acc5e8e5536d..c874518b27df28 100644 --- a/src/sentry/static/sentry/app/components/pagination.jsx +++ b/src/sentry/static/sentry/app/components/pagination.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import utils from '../utils'; import {browserHistory} from 'react-router'; @@ -5,13 +6,13 @@ import {t} from '../locale'; export default React.createClass({ propTypes: { - pageLinks: React.PropTypes.string, - to: React.PropTypes.string, - onCursor: React.PropTypes.func + pageLinks: PropTypes.string, + to: PropTypes.string, + onCursor: PropTypes.func }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/pill.jsx b/src/sentry/static/sentry/app/components/pill.jsx index 46d8dfd21f4015..c726a15febc3d8 100644 --- a/src/sentry/static/sentry/app/components/pill.jsx +++ b/src/sentry/static/sentry/app/components/pill.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Pill = React.createClass({ propTypes: { - className: React.PropTypes.string, - name: React.PropTypes.string, - value: React.PropTypes.any + className: PropTypes.string, + name: PropTypes.string, + value: PropTypes.any }, renderValue() { diff --git a/src/sentry/static/sentry/app/components/pluginConfig.jsx b/src/sentry/static/sentry/app/components/pluginConfig.jsx index bb78addb72e022..89ac4a78726d77 100644 --- a/src/sentry/static/sentry/app/components/pluginConfig.jsx +++ b/src/sentry/static/sentry/app/components/pluginConfig.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -9,10 +10,10 @@ import {t} from '../locale'; const PluginConfig = React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - data: React.PropTypes.object.isRequired, - onDisablePlugin: React.PropTypes.func + organization: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + data: PropTypes.object.isRequired, + onDisablePlugin: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/pluginList.jsx b/src/sentry/static/sentry/app/components/pluginList.jsx index ac89056d3cf38c..7af6f279f4f55e 100644 --- a/src/sentry/static/sentry/app/components/pluginList.jsx +++ b/src/sentry/static/sentry/app/components/pluginList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -8,11 +9,11 @@ import {t} from '../locale'; export default React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - pluginList: React.PropTypes.array.isRequired, - onDisablePlugin: React.PropTypes.func.isRequired, - onEnablePlugin: React.PropTypes.func.isRequired + organization: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + pluginList: PropTypes.array.isRequired, + onDisablePlugin: PropTypes.func.isRequired, + onEnablePlugin: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/projectHeader/index.jsx b/src/sentry/static/sentry/app/components/projectHeader/index.jsx index b9b018c4d29163..f3498596b72b7a 100644 --- a/src/sentry/static/sentry/app/components/projectHeader/index.jsx +++ b/src/sentry/static/sentry/app/components/projectHeader/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -8,9 +9,9 @@ import {t} from '../../locale'; const ProjectHeader = React.createClass({ propTypes: { - project: React.PropTypes.object.isRequired, - organization: React.PropTypes.object.isRequired, - activeSection: React.PropTypes.string + project: PropTypes.object.isRequired, + organization: PropTypes.object.isRequired, + activeSection: PropTypes.string }, render() { diff --git a/src/sentry/static/sentry/app/components/projectHeader/projectSelector.jsx b/src/sentry/static/sentry/app/components/projectHeader/projectSelector.jsx index 4d76cc8f44e910..b29f1d952df9f7 100644 --- a/src/sentry/static/sentry/app/components/projectHeader/projectSelector.jsx +++ b/src/sentry/static/sentry/app/components/projectHeader/projectSelector.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import {browserHistory} from 'react-router'; @@ -18,12 +19,12 @@ const ProjectSelector = React.createClass({ propTypes: { // Accepts a project id (slug) and not a project *object* because ProjectSelector // is created from Django templates, and only organization is serialized - projectId: React.PropTypes.string, - organization: React.PropTypes.object.isRequired + projectId: PropTypes.string, + organization: PropTypes.object.isRequired }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/projectLabel.jsx b/src/sentry/static/sentry/app/components/projectLabel.jsx index 4a681606dd1cf6..30ae4e99bd2ca7 100644 --- a/src/sentry/static/sentry/app/components/projectLabel.jsx +++ b/src/sentry/static/sentry/app/components/projectLabel.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; const ProjectLabel = React.createClass({ propTypes: { - project: React.PropTypes.object, - organization: React.PropTypes.object + project: PropTypes.object, + organization: PropTypes.object }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/projects/bookmarkToggle.jsx b/src/sentry/static/sentry/app/components/projects/bookmarkToggle.jsx index 0feb60306a8bda..493974ebe06692 100644 --- a/src/sentry/static/sentry/app/components/projects/bookmarkToggle.jsx +++ b/src/sentry/static/sentry/app/components/projects/bookmarkToggle.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -6,8 +7,8 @@ import {update as projectUpdate} from '../../actionCreators/projects'; const BookmarkToggle = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - project: React.PropTypes.object.isRequired + orgId: PropTypes.string.isRequired, + project: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/queryCount.jsx b/src/sentry/static/sentry/app/components/queryCount.jsx index cb1e3a23b87b71..e00cabe711734f 100644 --- a/src/sentry/static/sentry/app/components/queryCount.jsx +++ b/src/sentry/static/sentry/app/components/queryCount.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import classNames from 'classnames'; /** diff --git a/src/sentry/static/sentry/app/components/releaseProjectStatSparkline.jsx b/src/sentry/static/sentry/app/components/releaseProjectStatSparkline.jsx index d30c8afdc45fdb..167163b7228f5f 100644 --- a/src/sentry/static/sentry/app/components/releaseProjectStatSparkline.jsx +++ b/src/sentry/static/sentry/app/components/releaseProjectStatSparkline.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import {Sparklines, SparklinesLine} from 'react-sparklines'; @@ -11,9 +12,9 @@ import {t, tn} from '../locale'; const ReleaseProjectStatSparkline = React.createClass({ propTypes: { - orgId: React.PropTypes.string, - project: React.PropTypes.object, - version: React.PropTypes.string + orgId: PropTypes.string, + project: PropTypes.object, + version: PropTypes.string }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/releaseStats.jsx b/src/sentry/static/sentry/app/components/releaseStats.jsx index b01be37e71d046..065a9a734a9fc3 100644 --- a/src/sentry/static/sentry/app/components/releaseStats.jsx +++ b/src/sentry/static/sentry/app/components/releaseStats.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Avatar from './avatar'; import TooltipMixin from '../mixins/tooltip'; @@ -5,7 +6,7 @@ import {t} from '../locale'; const ReleaseStats = React.createClass({ propTypes: { - release: React.PropTypes.object + release: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/repositoryFileSummary.jsx b/src/sentry/static/sentry/app/components/repositoryFileSummary.jsx index 6bdf6578984b97..e047be074fb2b9 100644 --- a/src/sentry/static/sentry/app/components/repositoryFileSummary.jsx +++ b/src/sentry/static/sentry/app/components/repositoryFileSummary.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import FileChange from './fileChange'; import {t, tn} from '../locale'; @@ -14,14 +15,14 @@ function Collapsed(props) { } Collapsed.propTypes = { - onClick: React.PropTypes.func.isRequired, - count: React.PropTypes.number.isRequired + onClick: PropTypes.func.isRequired, + count: PropTypes.number.isRequired }; const RepositoryFileSummary = React.createClass({ propTypes: { - fileChangeSummary: React.PropTypes.object, - repository: React.PropTypes.string + fileChangeSummary: PropTypes.object, + repository: PropTypes.string }, statics: { diff --git a/src/sentry/static/sentry/app/components/resolutionBox.jsx b/src/sentry/static/sentry/app/components/resolutionBox.jsx index 872d9d8203e5fc..1485bc6de9008a 100644 --- a/src/sentry/static/sentry/app/components/resolutionBox.jsx +++ b/src/sentry/static/sentry/app/components/resolutionBox.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -7,7 +8,7 @@ import {t, tct} from '../locale'; export default React.createClass({ propTypes: { - statusDetails: React.PropTypes.object.isRequired + statusDetails: PropTypes.object.isRequired }, mixins: [PureRenderMixin], @@ -15,10 +16,10 @@ export default React.createClass({ renderReason() { let {params, statusDetails} = this.props; let actor = statusDetails.actor - ? ( + ? {statusDetails.actor.name} - ) + : null; if (statusDetails.inNextRelease && statusDetails.actor) { diff --git a/src/sentry/static/sentry/app/components/resultGrid.jsx b/src/sentry/static/sentry/app/components/resultGrid.jsx index ad976b078cd89f..b83e934433499b 100644 --- a/src/sentry/static/sentry/app/components/resultGrid.jsx +++ b/src/sentry/static/sentry/app/components/resultGrid.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import $ from 'jquery'; import {browserHistory} from 'react-router'; @@ -9,11 +10,11 @@ import Pagination from './pagination'; const Filter = React.createClass({ propTypes: { - name: React.PropTypes.string.isRequired, - queryKey: React.PropTypes.string.isRequired, - options: React.PropTypes.array.isRequired, - path: React.PropTypes.string.isRequired, - value: React.PropTypes.any + name: PropTypes.string.isRequired, + queryKey: PropTypes.string.isRequired, + options: PropTypes.array.isRequired, + path: PropTypes.string.isRequired, + value: PropTypes.any }, getCurrentLabel() { @@ -77,10 +78,10 @@ const Filter = React.createClass({ const SortBy = React.createClass({ propTypes: { - options: React.PropTypes.array.isRequired, - path: React.PropTypes.string.isRequired, - location: React.PropTypes.string.isRequired, - value: React.PropTypes.any + options: PropTypes.array.isRequired, + path: PropTypes.string.isRequired, + location: PropTypes.string.isRequired, + value: PropTypes.any }, getCurrentSortLabel() { @@ -127,20 +128,20 @@ const SortBy = React.createClass({ const ResultGrid = React.createClass({ propTypes: { - columns: React.PropTypes.array, - columnsForRow: React.PropTypes.func, - defaultSort: React.PropTypes.string, - defaultParams: React.PropTypes.object, - endpoint: React.PropTypes.string, - filters: React.PropTypes.object, - hasPagination: React.PropTypes.bool, - hasSearch: React.PropTypes.bool, - keyForRow: React.PropTypes.func, - location: React.PropTypes.string, - method: React.PropTypes.string, - options: React.PropTypes.array, - path: React.PropTypes.string, - sortOptions: React.PropTypes.array + columns: PropTypes.array, + columnsForRow: PropTypes.func, + defaultSort: PropTypes.string, + defaultParams: PropTypes.object, + endpoint: PropTypes.string, + filters: PropTypes.object, + hasPagination: PropTypes.bool, + hasSearch: PropTypes.bool, + keyForRow: PropTypes.func, + location: PropTypes.string, + method: PropTypes.string, + options: PropTypes.array, + path: PropTypes.string, + sortOptions: PropTypes.array }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/searchBar.jsx b/src/sentry/static/sentry/app/components/searchBar.jsx index b4b9339a64e3df..4d820f41014545 100644 --- a/src/sentry/static/sentry/app/components/searchBar.jsx +++ b/src/sentry/static/sentry/app/components/searchBar.jsx @@ -1,14 +1,15 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import PureRenderMixin from 'react-addons-pure-render-mixin'; const SearchBar = React.createClass({ propTypes: { - query: React.PropTypes.string, - defaultQuery: React.PropTypes.string, - onSearch: React.PropTypes.func, - onQueryChange: React.PropTypes.func, - placeholder: React.PropTypes.string + query: PropTypes.string, + defaultQuery: PropTypes.string, + onSearch: PropTypes.func, + onQueryChange: PropTypes.func, + placeholder: PropTypes.string }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/selectInput.jsx b/src/sentry/static/sentry/app/components/selectInput.jsx index 0953c400b7850f..c1a59ad4c0ec85 100644 --- a/src/sentry/static/sentry/app/components/selectInput.jsx +++ b/src/sentry/static/sentry/app/components/selectInput.jsx @@ -1,14 +1,15 @@ +import PropTypes from 'prop-types'; import React from 'react'; import jQuery from 'jquery'; const SelectInput = React.createClass({ propTypes: { - disabled: React.PropTypes.bool, - multiple: React.PropTypes.bool, - required: React.PropTypes.bool, - placeholder: React.PropTypes.string, - value: React.PropTypes.string, - onChange: React.PropTypes.func + disabled: PropTypes.bool, + multiple: PropTypes.bool, + required: PropTypes.bool, + placeholder: PropTypes.string, + value: PropTypes.string, + onChange: PropTypes.func }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/shortId.jsx b/src/sentry/static/sentry/app/components/shortId.jsx index 2e8b1b984417b0..8ba477172dbbdf 100644 --- a/src/sentry/static/sentry/app/components/shortId.jsx +++ b/src/sentry/static/sentry/app/components/shortId.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import ProjectState from '../mixins/projectState'; @@ -6,8 +7,8 @@ import AutoSelectText from './autoSelectText'; const ShortId = React.createClass({ propTypes: { - shortId: React.PropTypes.string, - project: React.PropTypes.object + shortId: PropTypes.string, + project: PropTypes.object }, mixins: [PureRenderMixin, ProjectState], diff --git a/src/sentry/static/sentry/app/components/sidebar/broadcasts.jsx b/src/sentry/static/sentry/app/components/sidebar/broadcasts.jsx index 2927384cb47747..1285c385ccc9c5 100644 --- a/src/sentry/static/sentry/app/components/sidebar/broadcasts.jsx +++ b/src/sentry/static/sentry/app/components/sidebar/broadcasts.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -12,10 +13,10 @@ const POLLER_DELAY = 60000; const Broadcasts = React.createClass({ propTypes: { - showPanel: React.PropTypes.bool, - currentPanel: React.PropTypes.string, - hidePanel: React.PropTypes.func, - onShowPanel: React.PropTypes.func.isRequired + showPanel: PropTypes.bool, + currentPanel: PropTypes.string, + hidePanel: PropTypes.func, + onShowPanel: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/components/sidebar/incidents.jsx b/src/sentry/static/sentry/app/components/sidebar/incidents.jsx index 9ce16582941e79..cdce0d568cebcb 100644 --- a/src/sentry/static/sentry/app/components/sidebar/incidents.jsx +++ b/src/sentry/static/sentry/app/components/sidebar/incidents.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; @@ -8,10 +9,10 @@ import {t} from '../../locale'; const Incidents = React.createClass({ propTypes: { - showPanel: React.PropTypes.bool, - currentPanel: React.PropTypes.string, - hidePanel: React.PropTypes.func, - onShowPanel: React.PropTypes.func.isRequired + showPanel: PropTypes.bool, + currentPanel: PropTypes.string, + hidePanel: PropTypes.func, + onShowPanel: PropTypes.func.isRequired }, mixins: [Reflux.listenTo(IncidentStore, 'onIncidentChange')], diff --git a/src/sentry/static/sentry/app/components/sidebar/index.jsx b/src/sentry/static/sentry/app/components/sidebar/index.jsx index 58972262b642bd..752d0a256c6dc4 100644 --- a/src/sentry/static/sentry/app/components/sidebar/index.jsx +++ b/src/sentry/static/sentry/app/components/sidebar/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import $ from 'jquery'; @@ -19,11 +20,11 @@ import {t} from '../../locale'; const OnboardingStatus = React.createClass({ propTypes: { - org: React.PropTypes.object.isRequired, - currentPanel: React.PropTypes.string, - onShowPanel: React.PropTypes.func, - showPanel: React.PropTypes.bool, - hidePanel: React.PropTypes.func + org: PropTypes.object.isRequired, + currentPanel: PropTypes.string, + onShowPanel: PropTypes.func, + showPanel: PropTypes.bool, + hidePanel: PropTypes.func }, render() { @@ -72,7 +73,7 @@ function getFirstRequiredAdminAction(org) { const Sidebar = React.createClass({ contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin, OrganizationState], diff --git a/src/sentry/static/sentry/app/components/sidebar/organizationSelector.jsx b/src/sentry/static/sentry/app/components/sidebar/organizationSelector.jsx index 0b0ad714c437ee..2753405b0eb851 100644 --- a/src/sentry/static/sentry/app/components/sidebar/organizationSelector.jsx +++ b/src/sentry/static/sentry/app/components/sidebar/organizationSelector.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Link from '../link'; import SidebarPanel from '../sidebarPanel'; @@ -11,15 +12,15 @@ import {t} from '../../locale'; const OrganizationSelector = React.createClass({ propTypes: { - organization: React.PropTypes.object, - showPanel: React.PropTypes.bool, - togglePanel: React.PropTypes.func, - hidePanel: React.PropTypes.func, - currentPanel: React.PropTypes.string + organization: PropTypes.object, + showPanel: PropTypes.bool, + togglePanel: PropTypes.func, + hidePanel: PropTypes.func, + currentPanel: PropTypes.string }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [AppState], diff --git a/src/sentry/static/sentry/app/components/sidebar/userNav.jsx b/src/sentry/static/sentry/app/components/sidebar/userNav.jsx index a64ec7054af0fb..e14c447a008f05 100644 --- a/src/sentry/static/sentry/app/components/sidebar/userNav.jsx +++ b/src/sentry/static/sentry/app/components/sidebar/userNav.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ConfigStore from '../../stores/configStore'; import DropdownLink from '../dropdownLink'; @@ -7,7 +8,7 @@ import {t} from '../../locale'; const UserNav = React.createClass({ contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, shouldComponentUpdate(nextProps, nextState) { diff --git a/src/sentry/static/sentry/app/components/sidebarPanel.jsx b/src/sentry/static/sentry/app/components/sidebarPanel.jsx index 13d70f4c26c291..9c4753a761f4fb 100644 --- a/src/sentry/static/sentry/app/components/sidebarPanel.jsx +++ b/src/sentry/static/sentry/app/components/sidebarPanel.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SidebarPanelItem from './sidebarPanelItem'; const SidebarPanel = React.createClass({ propTypes: { - title: React.PropTypes.string, - items: React.PropTypes.array, - hidePanel: React.PropTypes.func + title: PropTypes.string, + items: PropTypes.array, + hidePanel: PropTypes.func }, render() { diff --git a/src/sentry/static/sentry/app/components/sidebarPanelItem.jsx b/src/sentry/static/sentry/app/components/sidebarPanelItem.jsx index bdc75e8f8fb467..3e468b51760400 100644 --- a/src/sentry/static/sentry/app/components/sidebarPanelItem.jsx +++ b/src/sentry/static/sentry/app/components/sidebarPanelItem.jsx @@ -1,12 +1,13 @@ +import PropTypes from 'prop-types'; import React from 'react'; const SidebarPanelItem = React.createClass({ propTypes: { - title: React.PropTypes.string, - image: React.PropTypes.string, - message: React.PropTypes.any, - link: React.PropTypes.string, - hasSeen: React.PropTypes.bool + title: PropTypes.string, + image: PropTypes.string, + message: PropTypes.any, + link: PropTypes.string, + hasSeen: PropTypes.bool }, render() { diff --git a/src/sentry/static/sentry/app/components/splitLayout.jsx b/src/sentry/static/sentry/app/components/splitLayout.jsx index 9a2f7f128c2330..089f926b5bdbca 100644 --- a/src/sentry/static/sentry/app/components/splitLayout.jsx +++ b/src/sentry/static/sentry/app/components/splitLayout.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import classNames from 'classnames'; import SpreadLayout from './spreadLayout'; diff --git a/src/sentry/static/sentry/app/components/spreadLayout.jsx b/src/sentry/static/sentry/app/components/spreadLayout.jsx index 09b22b60ea5d42..95a9b5e2319088 100644 --- a/src/sentry/static/sentry/app/components/spreadLayout.jsx +++ b/src/sentry/static/sentry/app/components/spreadLayout.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import classNames from 'classnames'; // Flexbox container whose children will have `justify-content: space-between` diff --git a/src/sentry/static/sentry/app/components/stackedBarChart.jsx b/src/sentry/static/sentry/app/components/stackedBarChart.jsx index dbaa7e7d0cc56b..8f32c52b2c5e63 100644 --- a/src/sentry/static/sentry/app/components/stackedBarChart.jsx +++ b/src/sentry/static/sentry/app/components/stackedBarChart.jsx @@ -1,5 +1,6 @@ import moment from 'moment'; import _ from 'lodash'; +import PropTypes from 'prop-types'; import React from 'react'; import TooltipMixin from '../mixins/tooltip'; import Count from './count'; @@ -8,37 +9,37 @@ import ConfigStore from '../stores/configStore.jsx'; const StackedBarChart = React.createClass({ propTypes: { // TODO(dcramer): DEPRECATED, use series instead - points: React.PropTypes.arrayOf( - React.PropTypes.shape({ - x: React.PropTypes.number.isRequired, - y: React.PropTypes.array.isRequired, - label: React.PropTypes.string + points: PropTypes.arrayOf( + PropTypes.shape({ + x: PropTypes.number.isRequired, + y: PropTypes.array.isRequired, + label: PropTypes.string }) ), - series: React.PropTypes.arrayOf( - React.PropTypes.shape({ - data: React.PropTypes.arrayOf( - React.PropTypes.shape({ - x: React.PropTypes.number.isRequired, - y: React.PropTypes.number + series: PropTypes.arrayOf( + PropTypes.shape({ + data: PropTypes.arrayOf( + PropTypes.shape({ + x: PropTypes.number.isRequired, + y: PropTypes.number }) ), - label: React.PropTypes.string + label: PropTypes.string }) ), - interval: React.PropTypes.string, - height: React.PropTypes.number, - width: React.PropTypes.number, - placement: React.PropTypes.string, - label: React.PropTypes.string, - markers: React.PropTypes.arrayOf( - React.PropTypes.shape({ - x: React.PropTypes.number.isRequired, - label: React.PropTypes.string + interval: PropTypes.string, + height: PropTypes.number, + width: PropTypes.number, + placement: PropTypes.string, + label: PropTypes.string, + markers: PropTypes.arrayOf( + PropTypes.shape({ + x: PropTypes.number.isRequired, + label: PropTypes.string }) ), - tooltip: React.PropTypes.func, - barClasses: React.PropTypes.array + tooltip: PropTypes.func, + barClasses: PropTypes.array }, mixins: [ diff --git a/src/sentry/static/sentry/app/components/stream/group.jsx b/src/sentry/static/sentry/app/components/stream/group.jsx index e09a6169b55739..4c80c3993b80ed 100644 --- a/src/sentry/static/sentry/app/components/stream/group.jsx +++ b/src/sentry/static/sentry/app/components/stream/group.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; @@ -16,11 +17,11 @@ import {valueIsEqual} from '../../utils'; const StreamGroup = React.createClass({ propTypes: { - id: React.PropTypes.string.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - statsPeriod: React.PropTypes.string.isRequired, - canSelect: React.PropTypes.bool + id: PropTypes.string.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + statsPeriod: PropTypes.string.isRequired, + canSelect: PropTypes.bool }, mixins: [Reflux.listenTo(GroupStore, 'onGroupChange'), ProjectState], diff --git a/src/sentry/static/sentry/app/components/stream/groupChart.jsx b/src/sentry/static/sentry/app/components/stream/groupChart.jsx index 8212274bfa085c..41cc7e0081355f 100644 --- a/src/sentry/static/sentry/app/components/stream/groupChart.jsx +++ b/src/sentry/static/sentry/app/components/stream/groupChart.jsx @@ -1,11 +1,12 @@ import LazyLoad from 'react-lazy-load'; +import PropTypes from 'prop-types'; import React from 'react'; import BarChart from '../barChart'; const GroupChart = React.createClass({ propTypes: { - statsPeriod: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + statsPeriod: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }, shouldComponentUpdate(nextProps) { diff --git a/src/sentry/static/sentry/app/components/stream/groupCheckBox.jsx b/src/sentry/static/sentry/app/components/stream/groupCheckBox.jsx index b0862ba89c9a1e..abccc05cb763b2 100644 --- a/src/sentry/static/sentry/app/components/stream/groupCheckBox.jsx +++ b/src/sentry/static/sentry/app/components/stream/groupCheckBox.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; @@ -6,7 +7,7 @@ import Checkbox from '../checkbox'; const GroupCheckBox = React.createClass({ propTypes: { - id: React.PropTypes.string.isRequired + id: PropTypes.string.isRequired }, mixins: [Reflux.listenTo(SelectedGroupStore, 'onSelectedGroupChange')], diff --git a/src/sentry/static/sentry/app/components/strictClick.jsx b/src/sentry/static/sentry/app/components/strictClick.jsx index 8167810675faf8..dc0889a82a8e3a 100644 --- a/src/sentry/static/sentry/app/components/strictClick.jsx +++ b/src/sentry/static/sentry/app/components/strictClick.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -9,7 +10,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; */ const StrictClick = React.createClass({ propTypes: { - onClick: React.PropTypes.func + onClick: PropTypes.func }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/switch.jsx b/src/sentry/static/sentry/app/components/switch.jsx index 039a4782e01046..8df7c6dec16090 100644 --- a/src/sentry/static/sentry/app/components/switch.jsx +++ b/src/sentry/static/sentry/app/components/switch.jsx @@ -1,12 +1,13 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Switch = React.createClass({ propTypes: { - size: React.PropTypes.string, - isActive: React.PropTypes.bool, - isLoading: React.PropTypes.bool, - isDisabled: React.PropTypes.bool, - toggle: React.PropTypes.func.isRequired + size: PropTypes.string, + isActive: PropTypes.bool, + isLoading: PropTypes.bool, + isDisabled: PropTypes.bool, + toggle: PropTypes.func.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/timeSince.jsx b/src/sentry/static/sentry/app/components/timeSince.jsx index 18b4380dbdfec3..c9319cb4b79def 100644 --- a/src/sentry/static/sentry/app/components/timeSince.jsx +++ b/src/sentry/static/sentry/app/components/timeSince.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import moment from 'moment'; import PureRenderMixin from 'react-addons-pure-render-mixin'; @@ -7,8 +8,8 @@ import _ from 'lodash'; const TimeSince = React.createClass({ propTypes: { - date: React.PropTypes.any.isRequired, - suffix: React.PropTypes.string + date: PropTypes.any.isRequired, + suffix: PropTypes.string }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/components/todos.jsx b/src/sentry/static/sentry/app/components/todos.jsx index c45800cecbde80..fb62abc780b7d6 100644 --- a/src/sentry/static/sentry/app/components/todos.jsx +++ b/src/sentry/static/sentry/app/components/todos.jsx @@ -1,4 +1,5 @@ import moment from 'moment'; +import PropTypes from 'prop-types'; import React from 'react'; import {t, tct} from '../locale'; @@ -7,8 +8,8 @@ import OrganizationState from '../mixins/organizationState'; const TodoItem = React.createClass({ propTypes: { - task: React.PropTypes.object, - onSkip: React.PropTypes.func.isRequired + task: PropTypes.object, + onSkip: PropTypes.func.isRequired }, mixins: [OrganizationState], @@ -114,9 +115,9 @@ const TodoItem = React.createClass({ const Confirmation = React.createClass({ propTypes: { - task: React.PropTypes.number, - onSkip: React.PropTypes.func.isRequired, - dismiss: React.PropTypes.func.isRequired + task: PropTypes.number, + onSkip: PropTypes.func.isRequired, + dismiss: PropTypes.func.isRequired }, skip: function(e) { diff --git a/src/sentry/static/sentry/app/components/truncate.jsx b/src/sentry/static/sentry/app/components/truncate.jsx index 5c76b001a3fac2..e732325a0844ad 100644 --- a/src/sentry/static/sentry/app/components/truncate.jsx +++ b/src/sentry/static/sentry/app/components/truncate.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; const Truncate = React.createClass({ propTypes: { - value: React.PropTypes.string.isRequired, - leftTrim: React.PropTypes.bool, - maxLength: React.PropTypes.number + value: PropTypes.string.isRequired, + leftTrim: PropTypes.bool, + maxLength: PropTypes.number }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/u2fenrollment.jsx b/src/sentry/static/sentry/app/components/u2fenrollment.jsx index 81653351ac3ba7..84e930a935bcf3 100644 --- a/src/sentry/static/sentry/app/components/u2fenrollment.jsx +++ b/src/sentry/static/sentry/app/components/u2fenrollment.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import U2fInterface from './u2finterface'; @@ -5,7 +6,7 @@ import {t} from '../locale'; const U2fEnrollment = React.createClass({ propTypes: { - enrollmentData: React.PropTypes.object + enrollmentData: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/components/u2finterface.jsx b/src/sentry/static/sentry/app/components/u2finterface.jsx index e24fc156a53225..c8a52f035f4e65 100644 --- a/src/sentry/static/sentry/app/components/u2finterface.jsx +++ b/src/sentry/static/sentry/app/components/u2finterface.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import u2f from 'u2f-api'; import ConfigStore from '../stores/configStore'; @@ -6,10 +7,10 @@ import {t, tct} from '../locale'; const U2fInterface = React.createClass({ propTypes: { - challengeData: React.PropTypes.object.isRequired, - flowMode: React.PropTypes.string.isRequired, - onTap: React.PropTypes.func, - silentIfUnsupported: React.PropTypes.bool + challengeData: PropTypes.object.isRequired, + flowMode: PropTypes.string.isRequired, + onTap: PropTypes.func, + silentIfUnsupported: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/u2fsign.jsx b/src/sentry/static/sentry/app/components/u2fsign.jsx index 6b12ccb73a9c47..9af0e57f04b093 100644 --- a/src/sentry/static/sentry/app/components/u2fsign.jsx +++ b/src/sentry/static/sentry/app/components/u2fsign.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import U2fInterface from './u2finterface'; @@ -5,8 +6,8 @@ import {t} from '../locale'; const U2fSign = React.createClass({ propTypes: { - challengeData: React.PropTypes.object, - displayMode: React.PropTypes.string + challengeData: PropTypes.object, + displayMode: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/userInfo.jsx b/src/sentry/static/sentry/app/components/userInfo.jsx index 6b04cbfd31101a..3fce56fb4f4c5a 100644 --- a/src/sentry/static/sentry/app/components/userInfo.jsx +++ b/src/sentry/static/sentry/app/components/userInfo.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; function getUserDisplayName(name) { @@ -10,7 +11,7 @@ function getUserDisplayName(name) { const UserInfo = React.createClass({ propTypes: { - user: React.PropTypes.any.isRequired + user: PropTypes.any.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/components/userLetterAvatar.jsx b/src/sentry/static/sentry/app/components/userLetterAvatar.jsx index fef2a1771091c9..96e8174896a26c 100644 --- a/src/sentry/static/sentry/app/components/userLetterAvatar.jsx +++ b/src/sentry/static/sentry/app/components/userLetterAvatar.jsx @@ -1,9 +1,10 @@ +import PropTypes from 'prop-types'; import React from 'react'; import LetterAvatar from './letterAvatar'; const UserLetterAvatar = React.createClass({ propTypes: { - user: React.PropTypes.object.isRequired + user: PropTypes.object.isRequired }, getIdentifier() { diff --git a/src/sentry/static/sentry/app/components/version.jsx b/src/sentry/static/sentry/app/components/version.jsx index e30ddce87232cf..6d3b41966ba3c9 100644 --- a/src/sentry/static/sentry/app/components/version.jsx +++ b/src/sentry/static/sentry/app/components/version.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -5,10 +6,10 @@ import {getShortVersion} from '../utils'; const Version = React.createClass({ propTypes: { - anchor: React.PropTypes.bool, - version: React.PropTypes.string.isRequired, - orgId: React.PropTypes.string, - projectId: React.PropTypes.string + anchor: PropTypes.bool, + version: PropTypes.string.isRequired, + orgId: PropTypes.string, + projectId: PropTypes.string }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/components/versionHoverCard.jsx b/src/sentry/static/sentry/app/components/versionHoverCard.jsx index 1715b27778e30e..c2e6e6f195e058 100644 --- a/src/sentry/static/sentry/app/components/versionHoverCard.jsx +++ b/src/sentry/static/sentry/app/components/versionHoverCard.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -15,9 +16,9 @@ import ApiMixin from '../mixins/apiMixin'; const VersionHoverCard = React.createClass({ propTypes: { - version: React.PropTypes.string.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + version: PropTypes.string.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/plugins/baseContext.jsx b/src/sentry/static/sentry/app/plugins/baseContext.jsx index 771150dbd099a5..49c3e1985b2451 100644 --- a/src/sentry/static/sentry/app/plugins/baseContext.jsx +++ b/src/sentry/static/sentry/app/plugins/baseContext.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ContextBlock from '../components/events/contexts/contextBlock'; @@ -11,8 +12,8 @@ class BaseContext extends React.Component { BaseContext.displayName = 'BaseContext'; BaseContext.propTypes = { - alias: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired + alias: PropTypes.string.isRequired, + data: PropTypes.object.isRequired }; BaseContext.getTitle = function(value) { diff --git a/src/sentry/static/sentry/app/plugins/components/issueActions.jsx b/src/sentry/static/sentry/app/plugins/components/issueActions.jsx index e62afdab49a2d0..c8e8bc58382813 100644 --- a/src/sentry/static/sentry/app/plugins/components/issueActions.jsx +++ b/src/sentry/static/sentry/app/plugins/components/issueActions.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Form, FormState} from '../../components/forms'; @@ -354,9 +355,9 @@ class IssueActions extends PluginComponentBase { } IssueActions.propTypes = { - plugin: React.PropTypes.object.isRequired, - actionType: React.PropTypes.oneOf(['unlink', 'link', 'create']).isRequired, - onSuccess: React.PropTypes.func + plugin: PropTypes.object.isRequired, + actionType: PropTypes.oneOf(['unlink', 'link', 'create']).isRequired, + onSuccess: PropTypes.func }; export default IssueActions; diff --git a/src/sentry/static/sentry/app/plugins/components/settings.jsx b/src/sentry/static/sentry/app/plugins/components/settings.jsx index 201e9d16bd1952..c85b157d4040bc 100644 --- a/src/sentry/static/sentry/app/plugins/components/settings.jsx +++ b/src/sentry/static/sentry/app/plugins/components/settings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -164,9 +165,9 @@ class PluginSettings extends PluginComponentBase { } PluginSettings.propTypes = { - organization: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - plugin: React.PropTypes.object.isRequired + organization: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + plugin: PropTypes.object.isRequired }; export default PluginSettings; diff --git a/src/sentry/static/sentry/app/proptypes.jsx b/src/sentry/static/sentry/app/proptypes.jsx index d3819b2e40c7bf..03aee7d696671a 100644 --- a/src/sentry/static/sentry/app/proptypes.jsx +++ b/src/sentry/static/sentry/app/proptypes.jsx @@ -1,103 +1,103 @@ -import React from 'react'; +import PropTypes from 'prop-types'; -const Metadata = React.PropTypes.shape({ - value: React.PropTypes.string, - message: React.PropTypes.string, - directive: React.PropTypes.string, - type: React.PropTypes.string, - title: React.PropTypes.string, - uri: React.PropTypes.string +const Metadata = PropTypes.shape({ + value: PropTypes.string, + message: PropTypes.string, + directive: PropTypes.string, + type: PropTypes.string, + title: PropTypes.string, + uri: PropTypes.string }); -const User = React.PropTypes.shape({ - id: React.PropTypes.string.isRequired +const User = PropTypes.shape({ + id: PropTypes.string.isRequired }); -const Group = React.PropTypes.shape({ - id: React.PropTypes.string.isRequired, - annotations: React.PropTypes.array, +const Group = PropTypes.shape({ + id: PropTypes.string.isRequired, + annotations: PropTypes.array, assignedTo: User, - count: React.PropTypes.string, - culprit: React.PropTypes.string, - firstSeen: React.PropTypes.string, - hasSeen: React.PropTypes.bool, - isBookmarked: React.PropTypes.bool, - isPublic: React.PropTypes.bool, - isSubscribed: React.PropTypes.bool, - lastSeen: React.PropTypes.string, - level: React.PropTypes.string, - logger: React.PropTypes.string, + count: PropTypes.string, + culprit: PropTypes.string, + firstSeen: PropTypes.string, + hasSeen: PropTypes.bool, + isBookmarked: PropTypes.bool, + isPublic: PropTypes.bool, + isSubscribed: PropTypes.bool, + lastSeen: PropTypes.string, + level: PropTypes.string, + logger: PropTypes.string, metadata: Metadata, - numComments: React.PropTypes.number, - permalink: React.PropTypes.string, - project: React.PropTypes.shape({ - name: React.PropTypes.string, - slug: React.PropTypes.string + numComments: PropTypes.number, + permalink: PropTypes.string, + project: PropTypes.shape({ + name: PropTypes.string, + slug: PropTypes.string }), - shareId: React.PropTypes.string, - shortId: React.PropTypes.string, - status: React.PropTypes.string, - statusDetails: React.PropTypes.object, - title: React.PropTypes.string, - type: React.PropTypes.oneOf(['error', 'csp', 'default']), - userCount: React.PropTypes.number + shareId: PropTypes.string, + shortId: PropTypes.string, + status: PropTypes.string, + statusDetails: PropTypes.object, + title: PropTypes.string, + type: PropTypes.oneOf(['error', 'csp', 'default']), + userCount: PropTypes.number }); -const Event = React.PropTypes.shape({ - id: React.PropTypes.string.isRequired, - context: React.PropTypes.object, - contexts: React.PropTypes.object, - dateCreated: React.PropTypes.string, - dateReceived: React.PropTypes.string, - entries: React.PropTypes.arrayOf( - React.PropTypes.shape({ - data: React.PropTypes.object, - type: React.PropTypes.string +const Event = PropTypes.shape({ + id: PropTypes.string.isRequired, + context: PropTypes.object, + contexts: PropTypes.object, + dateCreated: PropTypes.string, + dateReceived: PropTypes.string, + entries: PropTypes.arrayOf( + PropTypes.shape({ + data: PropTypes.object, + type: PropTypes.string }) ), - errors: React.PropTypes.arrayOf( - React.PropTypes.shape({ - data: React.PropTypes.object, - message: React.PropTypes.string, - type: React.PropTypes.string + errors: PropTypes.arrayOf( + PropTypes.shape({ + data: PropTypes.object, + message: PropTypes.string, + type: PropTypes.string }) ), - eventID: React.PropTypes.string, - fingerprints: React.PropTypes.arrayOf(React.PropTypes.string), - groupID: React.PropTypes.string, - message: React.PropTypes.string, + eventID: PropTypes.string, + fingerprints: PropTypes.arrayOf(PropTypes.string), + groupID: PropTypes.string, + message: PropTypes.string, metadata: Metadata, - packages: React.PropTypes.object, - platform: React.PropTypes.string, - sdk: React.PropTypes.object, - size: React.PropTypes.number, - tags: React.PropTypes.arrayOf( - React.PropTypes.shape({ - key: React.PropTypes.string, - value: React.PropTypes.string + packages: PropTypes.object, + platform: PropTypes.string, + sdk: PropTypes.object, + size: PropTypes.number, + tags: PropTypes.arrayOf( + PropTypes.shape({ + key: PropTypes.string, + value: PropTypes.string }) ), - type: React.PropTypes.oneOf(['error', 'csp', 'default']), - user: React.PropTypes.object + type: PropTypes.oneOf(['error', 'csp', 'default']), + user: PropTypes.object }); let SentryTypes = { - AnyModel: React.PropTypes.shape({ - id: React.PropTypes.string.isRequired + AnyModel: PropTypes.shape({ + id: PropTypes.string.isRequired }), Group, Event, - Organization: React.PropTypes.shape({ - id: React.PropTypes.string.isRequired + Organization: PropTypes.shape({ + id: PropTypes.string.isRequired }), - Project: React.PropTypes.shape({ - id: React.PropTypes.string.isRequired + Project: PropTypes.shape({ + id: PropTypes.string.isRequired }), - TagKey: React.PropTypes.shape({ - key: React.PropTypes.string.isRequired + TagKey: PropTypes.shape({ + key: PropTypes.string.isRequired }), - Team: React.PropTypes.shape({ - id: React.PropTypes.string.isRequired + Team: PropTypes.shape({ + id: PropTypes.string.isRequired }), User }; diff --git a/src/sentry/static/sentry/app/views/accountAuthorizations.jsx b/src/sentry/static/sentry/app/views/accountAuthorizations.jsx index aee1d326eba17d..1a07f6ad016e0b 100644 --- a/src/sentry/static/sentry/app/views/accountAuthorizations.jsx +++ b/src/sentry/static/sentry/app/views/accountAuthorizations.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AsyncView from './asyncView'; @@ -7,8 +8,8 @@ import {t} from '../locale'; const AuthorizationRow = React.createClass({ propTypes: { - authorization: React.PropTypes.object.isRequired, - onRevoke: React.PropTypes.func.isRequired + authorization: PropTypes.object.isRequired, + onRevoke: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/adminOverview/apiChart.jsx b/src/sentry/static/sentry/app/views/adminOverview/apiChart.jsx index 83535e6d98c706..f6f51f5fd0df97 100644 --- a/src/sentry/static/sentry/app/views/adminOverview/apiChart.jsx +++ b/src/sentry/static/sentry/app/views/adminOverview/apiChart.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -7,8 +8,8 @@ import LoadingIndicator from '../../components/loadingIndicator'; export default React.createClass({ propTypes: { - since: React.PropTypes.number.isRequired, - resolution: React.PropTypes.string.isRequired + since: PropTypes.number.isRequired, + resolution: PropTypes.string.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/adminOverview/eventChart.jsx b/src/sentry/static/sentry/app/views/adminOverview/eventChart.jsx index 161df1b6b29533..99d35e39b1d402 100644 --- a/src/sentry/static/sentry/app/views/adminOverview/eventChart.jsx +++ b/src/sentry/static/sentry/app/views/adminOverview/eventChart.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -7,8 +8,8 @@ import LoadingIndicator from '../../components/loadingIndicator'; export default React.createClass({ propTypes: { - since: React.PropTypes.number.isRequired, - resolution: React.PropTypes.string.isRequired + since: PropTypes.number.isRequired, + resolution: PropTypes.string.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/apiApplicationDetails.jsx b/src/sentry/static/sentry/app/views/apiApplicationDetails.jsx index 70f60dc2c3c7f2..0500a243edca39 100644 --- a/src/sentry/static/sentry/app/views/apiApplicationDetails.jsx +++ b/src/sentry/static/sentry/app/views/apiApplicationDetails.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; @@ -12,7 +13,7 @@ import {t} from '../locale'; const ApiApplicationDetails = React.createClass({ contextTypes: { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/apiApplications.jsx b/src/sentry/static/sentry/app/views/apiApplications.jsx index b30c4299105da0..8e8ac28c30bb09 100644 --- a/src/sentry/static/sentry/app/views/apiApplications.jsx +++ b/src/sentry/static/sentry/app/views/apiApplications.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import {Link} from 'react-router'; @@ -10,8 +11,8 @@ import {t} from '../locale'; const ApiApplicationRow = React.createClass({ propTypes: { - app: React.PropTypes.object.isRequired, - onRemove: React.PropTypes.func.isRequired + app: PropTypes.object.isRequired, + onRemove: PropTypes.func.isRequired }, mixins: [ApiMixin], @@ -83,7 +84,7 @@ const ApiApplicationRow = React.createClass({ const ApiApplications = React.createClass({ contextTypes: { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/apiTokens.jsx b/src/sentry/static/sentry/app/views/apiTokens.jsx index 2cc26ad82fba45..b1738b2bf5bab0 100644 --- a/src/sentry/static/sentry/app/views/apiTokens.jsx +++ b/src/sentry/static/sentry/app/views/apiTokens.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import {Link} from 'react-router'; @@ -12,8 +13,8 @@ import {t, tct} from '../locale'; const ApiTokenRow = React.createClass({ propTypes: { - token: React.PropTypes.object.isRequired, - onRemove: React.PropTypes.func.isRequired + token: PropTypes.object.isRequired, + onRemove: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/app.jsx b/src/sentry/static/sentry/app/views/app.jsx index 1cfeb75e9c3af8..3d3952b345670b 100644 --- a/src/sentry/static/sentry/app/views/app.jsx +++ b/src/sentry/static/sentry/app/views/app.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import $ from 'jquery'; import Cookies from 'js-cookie'; @@ -25,7 +26,7 @@ function getAlertTypeForProblem(problem) { const App = React.createClass({ childContextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/asyncView.jsx b/src/sentry/static/sentry/app/views/asyncView.jsx index 34e2b45e399247..d95819c5f958ce 100644 --- a/src/sentry/static/sentry/app/views/asyncView.jsx +++ b/src/sentry/static/sentry/app/views/asyncView.jsx @@ -1,4 +1,5 @@ import DocumentTitle from 'react-document-title'; +import PropTypes from 'prop-types'; import React from 'react'; import {isEqual} from 'lodash'; @@ -164,7 +165,7 @@ AsyncView.errorHandler = (component, fn) => { }; AsyncView.contextTypes = { - router: React.PropTypes.object.isRequired + router: PropTypes.object.isRequired }; export default AsyncView; diff --git a/src/sentry/static/sentry/app/views/groupActivity/index.jsx b/src/sentry/static/sentry/app/views/groupActivity/index.jsx index ff3fb0f2aa77d3..6f8bb937f92a82 100644 --- a/src/sentry/static/sentry/app/views/groupActivity/index.jsx +++ b/src/sentry/static/sentry/app/views/groupActivity/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -21,7 +22,7 @@ import {t, tct, tn} from '../../locale'; const GroupActivity = React.createClass({ // TODO(dcramer): only re-render on group/activity change propTypes: { - group: React.PropTypes.object + group: PropTypes.object }, mixins: [GroupState, ApiMixin], diff --git a/src/sentry/static/sentry/app/views/groupDetails.jsx b/src/sentry/static/sentry/app/views/groupDetails.jsx index c5e0fe56a72bd5..6f35f26f4fff9f 100644 --- a/src/sentry/static/sentry/app/views/groupDetails.jsx +++ b/src/sentry/static/sentry/app/views/groupDetails.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import {browserHistory} from 'react-router'; @@ -16,13 +17,13 @@ let ERROR_TYPES = { const GroupDetails = React.createClass({ propTypes: { - setProjectNavSection: React.PropTypes.func, - memberList: React.PropTypes.array + setProjectNavSection: PropTypes.func, + memberList: PropTypes.array }, childContextTypes: { group: SentryTypes.Group, - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin, Reflux.listenTo(GroupStore, 'onGroupChange')], diff --git a/src/sentry/static/sentry/app/views/groupDetails/actions.jsx b/src/sentry/static/sentry/app/views/groupDetails/actions.jsx index 1e9171b82a7558..f8a6a786a08b83 100644 --- a/src/sentry/static/sentry/app/views/groupDetails/actions.jsx +++ b/src/sentry/static/sentry/app/views/groupDetails/actions.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {browserHistory} from 'react-router'; import ApiMixin from '../../mixins/apiMixin'; @@ -18,12 +19,12 @@ import {getShortVersion} from '../../utils'; const ResolveActions = React.createClass({ propTypes: { - group: React.PropTypes.object.isRequired, - hasRelease: React.PropTypes.bool.isRequired, - latestRelease: React.PropTypes.object, - onUpdate: React.PropTypes.func.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired + group: PropTypes.object.isRequired, + hasRelease: PropTypes.bool.isRequired, + latestRelease: PropTypes.object, + onUpdate: PropTypes.func.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired }, getInitialState() { @@ -154,8 +155,8 @@ const ResolveActions = React.createClass({ const IgnoreActions = React.createClass({ propTypes: { - group: React.PropTypes.object.isRequired, - onUpdate: React.PropTypes.func.isRequired + group: PropTypes.object.isRequired, + onUpdate: PropTypes.func.isRequired }, getInitialState() { @@ -360,9 +361,9 @@ const IgnoreActions = React.createClass({ const DeleteActions = React.createClass({ propTypes: { - project: React.PropTypes.object.isRequired, - onDelete: React.PropTypes.func.isRequired, - onDiscard: React.PropTypes.func.isRequired + project: PropTypes.object.isRequired, + onDelete: PropTypes.func.isRequired, + onDiscard: PropTypes.func.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/views/groupDetails/eventToolbar.jsx b/src/sentry/static/sentry/app/views/groupDetails/eventToolbar.jsx index 2ee89fb8613d66..8558c42ae6dbb9 100644 --- a/src/sentry/static/sentry/app/views/groupDetails/eventToolbar.jsx +++ b/src/sentry/static/sentry/app/views/groupDetails/eventToolbar.jsx @@ -1,5 +1,6 @@ import {Link} from 'react-router'; import moment from 'moment'; +import PropTypes from 'prop-types'; import React from 'react'; import ConfigStore from '../../stores/configStore'; @@ -32,8 +33,8 @@ let formatDateDelta = (reference, observed) => { let GroupEventToolbar = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, group: SentryTypes.Group.isRequired, event: SentryTypes.Event.isRequired }, diff --git a/src/sentry/static/sentry/app/views/groupDetails/header.jsx b/src/sentry/static/sentry/app/views/groupDetails/header.jsx index 4f0fa1e942f7f1..6f5386e97c153b 100644 --- a/src/sentry/static/sentry/app/views/groupDetails/header.jsx +++ b/src/sentry/static/sentry/app/views/groupDetails/header.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link, browserHistory} from 'react-router'; import ApiMixin from '../../mixins/apiMixin'; @@ -16,11 +17,11 @@ import {t} from '../../locale'; const GroupHeader = React.createClass({ propTypes: { - group: React.PropTypes.object.isRequired + group: PropTypes.object.isRequired }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/groupGrouping/groupGroupingView.jsx b/src/sentry/static/sentry/app/views/groupGrouping/groupGroupingView.jsx index 1cc8bca8cd39f8..94fe51994e9df0 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/groupGroupingView.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/groupGroupingView.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import Reflux from 'reflux'; import {t} from '../../locale'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/mergedItem.jsx b/src/sentry/static/sentry/app/views/groupGrouping/mergedItem.jsx index 9fb6432b031def..f190a8694a3928 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/mergedItem.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/mergedItem.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import Reflux from 'reflux'; import classNames from 'classnames'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/mergedList.jsx b/src/sentry/static/sentry/app/views/groupGrouping/mergedList.jsx index 2eed6483fc8d12..135b340b36bc43 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/mergedList.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/mergedList.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {t} from '../../locale'; import {Event} from '../../proptypes'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/mergedToolbar.jsx b/src/sentry/static/sentry/app/views/groupGrouping/mergedToolbar.jsx index c296d65f863381..79a2138c13f993 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/mergedToolbar.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/mergedToolbar.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import Reflux from 'reflux'; import {t} from '../../locale'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/similarItem.jsx b/src/sentry/static/sentry/app/views/groupGrouping/similarItem.jsx index fd493a72e1510b..6b1ed82889c28e 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/similarItem.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/similarItem.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import Reflux from 'reflux'; import classNames from 'classnames'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/similarList.jsx b/src/sentry/static/sentry/app/views/groupGrouping/similarList.jsx index e28c3b67b68133..9868bfe023e424 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/similarList.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/similarList.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import {t} from '../../locale'; import {Group} from '../../proptypes'; diff --git a/src/sentry/static/sentry/app/views/groupGrouping/similarToolbar.jsx b/src/sentry/static/sentry/app/views/groupGrouping/similarToolbar.jsx index d634921ca9602d..f35e97a3b0ceee 100644 --- a/src/sentry/static/sentry/app/views/groupGrouping/similarToolbar.jsx +++ b/src/sentry/static/sentry/app/views/groupGrouping/similarToolbar.jsx @@ -1,4 +1,5 @@ -import React, {PropTypes} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import Reflux from 'reflux'; import {t} from '../../locale'; diff --git a/src/sentry/static/sentry/app/views/installWizard.jsx b/src/sentry/static/sentry/app/views/installWizard.jsx index ae6ce5a8a61e6e..5506eea27433d8 100644 --- a/src/sentry/static/sentry/app/views/installWizard.jsx +++ b/src/sentry/static/sentry/app/views/installWizard.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import _ from 'lodash'; @@ -11,9 +12,9 @@ import {getOption, getOptionField, getForm} from '../options'; const InstallWizardSettings = React.createClass({ propTypes: { - options: React.PropTypes.object.isRequired, - formDisabled: React.PropTypes.bool, - onSubmit: React.PropTypes.func.isRequired + options: PropTypes.object.isRequired, + formDisabled: PropTypes.bool, + onSubmit: PropTypes.func.isRequired }, getInitialState() { @@ -105,7 +106,7 @@ const InstallWizardSettings = React.createClass({ const InstallWizard = React.createClass({ propTypes: { - onConfigured: React.PropTypes.func.isRequired + onConfigured: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/onboarding/configure/waiting.jsx b/src/sentry/static/sentry/app/views/onboarding/configure/waiting.jsx index 86f4d0a1cd260e..c4588bfcab4d1a 100644 --- a/src/sentry/static/sentry/app/views/onboarding/configure/waiting.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/configure/waiting.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {t} from '../../../locale'; const Waiting = React.createClass({ propTypes: { - skip: React.PropTypes.func, - hasEvent: React.PropTypes.bool.isRequired + skip: PropTypes.func, + hasEvent: PropTypes.bool.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/views/onboarding/index.jsx b/src/sentry/static/sentry/app/views/onboarding/index.jsx index 465fcb5b97b1ce..1273647ae1fc02 100644 --- a/src/sentry/static/sentry/app/views/onboarding/index.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/index.jsx @@ -3,9 +3,11 @@ import DocumentTitle from 'react-document-title'; import ProgressNodes from './progress'; +import PropTypes from 'prop-types'; + const OnboardingWizard = React.createClass({ contextTypes: { - organization: React.PropTypes.object + organization: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/views/onboarding/progress.jsx b/src/sentry/static/sentry/app/views/onboarding/progress.jsx index ca65162eac527f..5c0d699fbf316e 100644 --- a/src/sentry/static/sentry/app/views/onboarding/progress.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/progress.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; import {onboardingSteps, stepDescriptions} from './utils'; @@ -5,11 +6,11 @@ import ConfigStore from '../../stores/configStore'; const ProgressNodes = React.createClass({ propTypes: { - params: React.PropTypes.object + params: PropTypes.object }, contextTypes: { - organization: React.PropTypes.object + organization: PropTypes.object }, steps: Object.keys(onboardingSteps), diff --git a/src/sentry/static/sentry/app/views/onboarding/project/index.jsx b/src/sentry/static/sentry/app/views/onboarding/project/index.jsx index 52ae8d0a526386..b18c5ce97436e7 100644 --- a/src/sentry/static/sentry/app/views/onboarding/project/index.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/project/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import classnames from 'classnames'; @@ -8,14 +9,14 @@ import {t} from '../../../locale'; const Project = React.createClass({ propTypes: { - next: React.PropTypes.func, - setPlatform: React.PropTypes.func, - platform: React.PropTypes.string, - setName: React.PropTypes.func, - name: React.PropTypes.string, - team: React.PropTypes.string, - setTeam: React.PropTypes.func, - teams: React.PropTypes.array + next: PropTypes.func, + setPlatform: PropTypes.func, + platform: PropTypes.string, + setName: PropTypes.func, + name: PropTypes.string, + team: PropTypes.string, + setTeam: PropTypes.func, + teams: PropTypes.array }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/views/onboarding/project/platformCard.jsx b/src/sentry/static/sentry/app/views/onboarding/project/platformCard.jsx index a291d6919ca28f..9760dac857e734 100644 --- a/src/sentry/static/sentry/app/views/onboarding/project/platformCard.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/project/platformCard.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {flattenedPlatforms} from '../utils'; @@ -6,8 +7,8 @@ import classnames from 'classnames'; const PlatformCard = React.createClass({ propTypes: { - platform: React.PropTypes.string, - onClick: React.PropTypes.func + platform: PropTypes.string, + onClick: PropTypes.func }, render() { diff --git a/src/sentry/static/sentry/app/views/onboarding/project/platformiconTile.jsx b/src/sentry/static/sentry/app/views/onboarding/project/platformiconTile.jsx index 4beb76217ab628..f331fa4011c52e 100644 --- a/src/sentry/static/sentry/app/views/onboarding/project/platformiconTile.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/project/platformiconTile.jsx @@ -1,10 +1,11 @@ +import PropTypes from 'prop-types'; import React from 'react'; const PlatformiconTile = React.createClass({ propTypes: { - platform: React.PropTypes.string, - onClick: React.PropTypes.func, - className: React.PropTypes.string + platform: PropTypes.string, + onClick: PropTypes.func, + className: PropTypes.string }, render() { diff --git a/src/sentry/static/sentry/app/views/onboarding/project/platformpicker.jsx b/src/sentry/static/sentry/app/views/onboarding/project/platformpicker.jsx index 7f7fd7d113f656..8ad4d8c3600322 100644 --- a/src/sentry/static/sentry/app/views/onboarding/project/platformpicker.jsx +++ b/src/sentry/static/sentry/app/views/onboarding/project/platformpicker.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ListLink from '../../../components/listLink'; import classnames from 'classnames'; @@ -10,9 +11,9 @@ const categoryList = Object.keys(categoryLists).concat('All'); const PlatformPicker = React.createClass({ propTypes: { - setPlatform: React.PropTypes.func.isRequired, - platform: React.PropTypes.string, - showOther: React.PropTypes.bool + setPlatform: PropTypes.func.isRequired, + platform: PropTypes.string, + showOther: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/views/organizationDashboard.jsx b/src/sentry/static/sentry/app/views/organizationDashboard.jsx index 21176ca933086e..1122334e4935df 100644 --- a/src/sentry/static/sentry/app/views/organizationDashboard.jsx +++ b/src/sentry/static/sentry/app/views/organizationDashboard.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import {Link} from 'react-router'; @@ -20,8 +21,8 @@ import {sortArray} from '../utils'; const AssignedIssues = React.createClass({ propTypes: { - statsPeriod: React.PropTypes.string, - pageSize: React.PropTypes.number + statsPeriod: PropTypes.string, + pageSize: PropTypes.number }, getEndpoint() { @@ -74,8 +75,8 @@ const AssignedIssues = React.createClass({ const NewIssues = React.createClass({ propTypes: { - statsPeriod: React.PropTypes.string, - pageSize: React.PropTypes.number + statsPeriod: PropTypes.string, + pageSize: PropTypes.number }, getEndpoint() { @@ -136,13 +137,13 @@ function ProjectSparkline(props) { ); } ProjectSparkline.propTypes = { - data: React.PropTypes.array.isRequired + data: PropTypes.array.isRequired }; const ProjectList = React.createClass({ propTypes: { - teams: React.PropTypes.array, - maxProjects: React.PropTypes.number + teams: PropTypes.array, + maxProjects: PropTypes.number }, mixins: [OrganizationState], diff --git a/src/sentry/static/sentry/app/views/organizationRateLimits/index.jsx b/src/sentry/static/sentry/app/views/organizationRateLimits/index.jsx index 990d6803b54699..ffb46247d65461 100644 --- a/src/sentry/static/sentry/app/views/organizationRateLimits/index.jsx +++ b/src/sentry/static/sentry/app/views/organizationRateLimits/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -9,8 +10,8 @@ import {t} from '../../locale'; const AccountLimit = React.createClass({ propTypes: { - value: React.PropTypes.number, - onChange: React.PropTypes.func.isRequired + value: PropTypes.number, + onChange: PropTypes.func.isRequired }, getRateLimitValues() { @@ -51,7 +52,7 @@ const AccountLimit = React.createClass({ const RateLimitEditor = React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired + organization: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/organizationRepositories.jsx b/src/sentry/static/sentry/app/views/organizationRepositories.jsx index ad9170195b5430..2d3cd30304afc3 100644 --- a/src/sentry/static/sentry/app/views/organizationRepositories.jsx +++ b/src/sentry/static/sentry/app/views/organizationRepositories.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; @@ -197,7 +198,7 @@ class AddRepositoryLink extends PluginComponentBase { } AddRepositoryLink.propTypes = { - provider: React.PropTypes.object.isRequired + provider: PropTypes.object.isRequired }; const OrganizationRepositories = React.createClass({ diff --git a/src/sentry/static/sentry/app/views/organizationSettings.jsx b/src/sentry/static/sentry/app/views/organizationSettings.jsx index 3b5eb27b247c93..476e49550a93cf 100644 --- a/src/sentry/static/sentry/app/views/organizationSettings.jsx +++ b/src/sentry/static/sentry/app/views/organizationSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -17,10 +18,10 @@ import {extractMultilineFields} from '../utils'; const OrganizationSettingsForm = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - access: React.PropTypes.object.isRequired, - initialData: React.PropTypes.object.isRequired, - onSave: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + access: PropTypes.object.isRequired, + initialData: PropTypes.object.isRequired, + onSave: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/organizationStats/projectTable.jsx b/src/sentry/static/sentry/app/views/organizationStats/projectTable.jsx index 6e77447948af68..3c4cf5a6ac1dcb 100644 --- a/src/sentry/static/sentry/app/views/organizationStats/projectTable.jsx +++ b/src/sentry/static/sentry/app/views/organizationStats/projectTable.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import Count from '../../components/count'; @@ -16,10 +17,10 @@ let getPercent = (item, total) => { const ProjectTable = React.createClass({ propTypes: { - projectMap: React.PropTypes.object.isRequired, - projectTotals: React.PropTypes.array.isRequired, - orgTotal: React.PropTypes.object.isRequired, - organization: React.PropTypes.object.isRequired + projectMap: PropTypes.object.isRequired, + projectTotals: PropTypes.array.isRequired, + orgTotal: PropTypes.object.isRequired, + organization: PropTypes.object.isRequired }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/views/organizationTeams/allTeamsList.jsx b/src/sentry/static/sentry/app/views/organizationTeams/allTeamsList.jsx index 4ea2e87652d3da..e8a2009d8bfef9 100644 --- a/src/sentry/static/sentry/app/views/organizationTeams/allTeamsList.jsx +++ b/src/sentry/static/sentry/app/views/organizationTeams/allTeamsList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -8,10 +9,10 @@ import {tct} from '../../locale'; const AllTeamsList = React.createClass({ propTypes: { - access: React.PropTypes.object, + access: PropTypes.object, organization: SentryTypes.Organization, - teamList: React.PropTypes.arrayOf(SentryTypes.Team), - openMembership: React.PropTypes.bool + teamList: PropTypes.arrayOf(SentryTypes.Team), + openMembership: PropTypes.bool }, render() { diff --git a/src/sentry/static/sentry/app/views/organizationTeams/allTeamsRow.jsx b/src/sentry/static/sentry/app/views/organizationTeams/allTeamsRow.jsx index 707889ab210e12..d3e0efcfbb43ff 100644 --- a/src/sentry/static/sentry/app/views/organizationTeams/allTeamsRow.jsx +++ b/src/sentry/static/sentry/app/views/organizationTeams/allTeamsRow.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -9,10 +10,10 @@ import {t} from '../../locale'; const AllTeamsRow = React.createClass({ propTypes: { - access: React.PropTypes.object.isRequired, - organization: React.PropTypes.object.isRequired, - team: React.PropTypes.object.isRequired, - openMembership: React.PropTypes.bool.isRequired + access: PropTypes.object.isRequired, + organization: PropTypes.object.isRequired, + team: PropTypes.object.isRequired, + openMembership: PropTypes.bool.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/organizationTeams/expandedTeamList.jsx b/src/sentry/static/sentry/app/views/organizationTeams/expandedTeamList.jsx index f809c31944d09a..f8ebe748932f3c 100644 --- a/src/sentry/static/sentry/app/views/organizationTeams/expandedTeamList.jsx +++ b/src/sentry/static/sentry/app/views/organizationTeams/expandedTeamList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import LazyLoad from 'react-lazy-load'; @@ -13,11 +14,11 @@ import {t, tct} from '../../locale'; const ExpandedTeamList = React.createClass({ propTypes: { - access: React.PropTypes.object.isRequired, + access: PropTypes.object.isRequired, organization: SentryTypes.Organization.isRequired, - teamList: React.PropTypes.arrayOf(SentryTypes.Team).isRequired, - projectStats: React.PropTypes.object, - hasTeams: React.PropTypes.bool + teamList: PropTypes.arrayOf(SentryTypes.Team).isRequired, + projectStats: PropTypes.object, + hasTeams: PropTypes.bool }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/organizationTeams/organizationStatOverview.jsx b/src/sentry/static/sentry/app/views/organizationTeams/organizationStatOverview.jsx index 3e6203c05a4686..f8c8c6ee1fcab9 100644 --- a/src/sentry/static/sentry/app/views/organizationTeams/organizationStatOverview.jsx +++ b/src/sentry/static/sentry/app/views/organizationTeams/organizationStatOverview.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import classNames from 'classnames'; @@ -10,11 +11,11 @@ import {t} from '../../locale'; const OrganizationStatOverview = React.createClass({ propTypes: { - orgId: React.PropTypes.string + orgId: PropTypes.string }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, mixins: [ApiMixin, OrganizationState], diff --git a/src/sentry/static/sentry/app/views/projectAlertRules.jsx b/src/sentry/static/sentry/app/views/projectAlertRules.jsx index ec3ffb87f96216..ebf6ba31e04694 100644 --- a/src/sentry/static/sentry/app/views/projectAlertRules.jsx +++ b/src/sentry/static/sentry/app/views/projectAlertRules.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -10,10 +11,10 @@ import {t} from '../locale'; const RuleRow = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - onDelete: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + onDelete: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectAlertSettings.jsx b/src/sentry/static/sentry/app/views/projectAlertSettings.jsx index 454fabb9f3148b..decc69ff3bfe30 100644 --- a/src/sentry/static/sentry/app/views/projectAlertSettings.jsx +++ b/src/sentry/static/sentry/app/views/projectAlertSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AsyncView from './asyncView'; @@ -8,10 +9,10 @@ import {t, tct} from '../locale'; class DigestSettings extends React.Component { static propTypes = { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - initialData: React.PropTypes.object.isRequired, - onSave: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + initialData: PropTypes.object.isRequired, + onSave: PropTypes.func.isRequired }; render() { @@ -72,10 +73,10 @@ class DigestSettings extends React.Component { class GeneralSettings extends React.Component { static propTypes = { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - initialData: React.PropTypes.object, - onSave: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + initialData: PropTypes.object, + onSave: PropTypes.func.isRequired }; render() { @@ -114,8 +115,8 @@ export default class ProjectAlertSettings extends AsyncView { // these are not declared as required of issues with cloned elements // not initially defining them (though they are bound before) ever // rendered - organization: React.PropTypes.object, - project: React.PropTypes.object + organization: PropTypes.object, + project: PropTypes.object }; getEndpoints() { diff --git a/src/sentry/static/sentry/app/views/projectCspSettings.jsx b/src/sentry/static/sentry/app/views/projectCspSettings.jsx index 1b62d08cbd614b..de71ca57a4ab65 100644 --- a/src/sentry/static/sentry/app/views/projectCspSettings.jsx +++ b/src/sentry/static/sentry/app/views/projectCspSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -8,9 +9,9 @@ import {t} from '../locale'; const ProjectCspSettingsForm = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - initialData: React.PropTypes.object.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + initialData: PropTypes.object.isRequired }, mixins: [ApiMixin], @@ -123,7 +124,7 @@ const ProjectCspSettingsForm = React.createClass({ const ProjectCspSettings = React.createClass({ propTypes: { - setProjectNavSection: React.PropTypes.func + setProjectNavSection: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectDashboard.jsx b/src/sentry/static/sentry/app/views/projectDashboard.jsx index ba2c31fc85b366..89aecd4772e081 100644 --- a/src/sentry/static/sentry/app/views/projectDashboard.jsx +++ b/src/sentry/static/sentry/app/views/projectDashboard.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; @@ -14,8 +15,8 @@ const PERIODS = new Set([PERIOD_HOUR, PERIOD_DAY, PERIOD_WEEK]); const ProjectDashboard = React.createClass({ propTypes: { - defaultStatsPeriod: React.PropTypes.string, - setProjectNavSection: React.PropTypes.func + defaultStatsPeriod: PropTypes.string, + setProjectNavSection: PropTypes.func }, mixins: [ProjectState], diff --git a/src/sentry/static/sentry/app/views/projectDashboard/chart.jsx b/src/sentry/static/sentry/app/views/projectDashboard/chart.jsx index 1bfa02b8972047..598e1f203fd242 100644 --- a/src/sentry/static/sentry/app/views/projectDashboard/chart.jsx +++ b/src/sentry/static/sentry/app/views/projectDashboard/chart.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import moment from 'moment'; import ApiMixin from '../../mixins/apiMixin'; @@ -9,8 +10,8 @@ import ProjectState from '../../mixins/projectState'; const ProjectChart = React.createClass({ propTypes: { - dateSince: React.PropTypes.number.isRequired, - resolution: React.PropTypes.string.isRequired + dateSince: PropTypes.number.isRequired, + resolution: PropTypes.string.isRequired }, mixins: [ApiMixin, ProjectState], diff --git a/src/sentry/static/sentry/app/views/projectDashboard/eventList.jsx b/src/sentry/static/sentry/app/views/projectDashboard/eventList.jsx index 5d1a9cd3529b96..3d1739c75ee40f 100644 --- a/src/sentry/static/sentry/app/views/projectDashboard/eventList.jsx +++ b/src/sentry/static/sentry/app/views/projectDashboard/eventList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; import LoadingError from '../../components/loadingError'; @@ -8,8 +9,8 @@ import EventNode from './eventNode'; const EventList = React.createClass({ propTypes: { - title: React.PropTypes.string.isRequired, - endpoint: React.PropTypes.string.isRequired + title: PropTypes.string.isRequired, + endpoint: PropTypes.string.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectEvents/index.jsx b/src/sentry/static/sentry/app/views/projectEvents/index.jsx index 4135dc3eb4fa04..4619a8e1c35afc 100644 --- a/src/sentry/static/sentry/app/views/projectEvents/index.jsx +++ b/src/sentry/static/sentry/app/views/projectEvents/index.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import {Link, browserHistory} from 'react-router'; import ApiMixin from '../../mixins/apiMixin'; @@ -12,8 +13,8 @@ import {t} from '../../locale'; const ProjectEvents = React.createClass({ propTypes: { - defaultQuery: React.PropTypes.string, - setProjectNavSection: React.PropTypes.func + defaultQuery: PropTypes.string, + setProjectNavSection: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectFilters.jsx b/src/sentry/static/sentry/app/views/projectFilters.jsx index 2ba74428bb47c8..e533f7a830124e 100644 --- a/src/sentry/static/sentry/app/views/projectFilters.jsx +++ b/src/sentry/static/sentry/app/views/projectFilters.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -26,17 +27,17 @@ const FilterSwitch = function(props) { }; FilterSwitch.propTypes = { - data: React.PropTypes.object.isRequired, - onToggle: React.PropTypes.func.isRequired, - size: React.PropTypes.string.isRequired + data: PropTypes.object.isRequired, + onToggle: PropTypes.func.isRequired, + size: PropTypes.string.isRequired }; const FilterRow = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - onToggle: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + onToggle: PropTypes.func.isRequired }, getInitialState() { @@ -112,10 +113,10 @@ const LEGACY_BROWSER_KEYS = Object.keys(LEGACY_BROWSER_SUBFILTERS); const LegacyBrowserFilterRow = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - onToggle: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + onToggle: PropTypes.func.isRequired }, getInitialState() { @@ -218,9 +219,9 @@ const LegacyBrowserFilterRow = React.createClass({ const ProjectFiltersSettingsForm = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - initialData: React.PropTypes.object.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + initialData: PropTypes.object.isRequired }, mixins: [ApiMixin, ProjectState], diff --git a/src/sentry/static/sentry/app/views/projectInstall/gettingStarted.jsx b/src/sentry/static/sentry/app/views/projectInstall/gettingStarted.jsx index d446d997145d8e..e1cb68296cfa65 100644 --- a/src/sentry/static/sentry/app/views/projectInstall/gettingStarted.jsx +++ b/src/sentry/static/sentry/app/views/projectInstall/gettingStarted.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ProjectContext from '../projects/projectContext'; @@ -6,8 +7,8 @@ import ProjectSelector from '../../components/projectHeader/projectSelector'; const GettingStartedBody = React.createClass({ contextTypes: { - project: React.PropTypes.object, - organization: React.PropTypes.object + project: PropTypes.object, + organization: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/views/projectInstall/languageNav.jsx b/src/sentry/static/sentry/app/views/projectInstall/languageNav.jsx index b637f17946b0ea..f7643d40af0057 100644 --- a/src/sentry/static/sentry/app/views/projectInstall/languageNav.jsx +++ b/src/sentry/static/sentry/app/views/projectInstall/languageNav.jsx @@ -1,9 +1,10 @@ +import PropTypes from 'prop-types'; import React from 'react'; const LanguageNav = React.createClass({ propTypes: { - name: React.PropTypes.string.isRequired, - active: React.PropTypes.bool + name: PropTypes.string.isRequired, + active: PropTypes.bool }, getInitialState() { diff --git a/src/sentry/static/sentry/app/views/projectInstall/overview.jsx b/src/sentry/static/sentry/app/views/projectInstall/overview.jsx index 136f12e339edf8..c3ef289c8fd259 100644 --- a/src/sentry/static/sentry/app/views/projectInstall/overview.jsx +++ b/src/sentry/static/sentry/app/views/projectInstall/overview.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {browserHistory} from 'react-router'; @@ -8,7 +9,7 @@ import {t, tct} from '../../locale'; const ProjectInstallOverview = React.createClass({ propTypes: { - platformData: React.PropTypes.object + platformData: PropTypes.object }, getInitialState() { diff --git a/src/sentry/static/sentry/app/views/projectInstall/platform.jsx b/src/sentry/static/sentry/app/views/projectInstall/platform.jsx index 71dcab3e5ba744..62300b918b9c94 100644 --- a/src/sentry/static/sentry/app/views/projectInstall/platform.jsx +++ b/src/sentry/static/sentry/app/views/projectInstall/platform.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../../mixins/apiMixin'; @@ -10,8 +11,8 @@ import {t, tct} from '../../locale'; const ProjectInstallPlatform = React.createClass({ propTypes: { - platformData: React.PropTypes.object, - linkPath: React.PropTypes.func + platformData: PropTypes.object.isRequired, + linkPath: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectIssueTracking.jsx b/src/sentry/static/sentry/app/views/projectIssueTracking.jsx index 6b92bf51b343d8..84092f7484641d 100644 --- a/src/sentry/static/sentry/app/views/projectIssueTracking.jsx +++ b/src/sentry/static/sentry/app/views/projectIssueTracking.jsx @@ -1,11 +1,12 @@ +import PropTypes from 'prop-types'; import React from 'react'; import PluginConfig from '../components/pluginConfig'; const ProjectIssueTracking = React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - dataList: React.PropTypes.array.isRequired + organization: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + dataList: PropTypes.array.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/views/projectKeyDetails.jsx b/src/sentry/static/sentry/app/views/projectKeyDetails.jsx index 901d87f597697b..a3354b68700652 100644 --- a/src/sentry/static/sentry/app/views/projectKeyDetails.jsx +++ b/src/sentry/static/sentry/app/views/projectKeyDetails.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import {isEqual} from 'lodash'; @@ -126,14 +127,14 @@ const KeyStats = React.createClass({ const KeySettings = React.createClass({ propTypes: { - organization: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - access: React.PropTypes.object.isRequired, - data: React.PropTypes.object.isRequired, - initialData: React.PropTypes.object, - onRemove: React.PropTypes.func.isRequired, - onSave: React.PropTypes.func.isRequired, - rateLimitsEnabled: React.PropTypes.bool + organization: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + access: PropTypes.object.isRequired, + data: PropTypes.object.isRequired, + initialData: PropTypes.object, + onRemove: PropTypes.func.isRequired, + onSave: PropTypes.func.isRequired, + rateLimitsEnabled: PropTypes.bool }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectKeys.jsx b/src/sentry/static/sentry/app/views/projectKeys.jsx index 4847b2d1b925f5..bdc9b1c3a36a9d 100644 --- a/src/sentry/static/sentry/app/views/projectKeys.jsx +++ b/src/sentry/static/sentry/app/views/projectKeys.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import DocumentTitle from 'react-document-title'; import {Link} from 'react-router'; @@ -14,12 +15,12 @@ import Pagination from '../components/pagination'; const KeyRow = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - access: React.PropTypes.object.isRequired, - onToggle: React.PropTypes.func.isRequired, - onRemove: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + access: PropTypes.object.isRequired, + onToggle: PropTypes.func.isRequired, + onRemove: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectReleaseTracking.jsx b/src/sentry/static/sentry/app/views/projectReleaseTracking.jsx index da417a9498005e..0968f3f796478b 100644 --- a/src/sentry/static/sentry/app/views/projectReleaseTracking.jsx +++ b/src/sentry/static/sentry/app/views/projectReleaseTracking.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; @@ -10,8 +11,8 @@ import LoadingIndicator from '../components/loadingIndicator'; const ProjectReleaseTracking = React.createClass({ propTypes: { - organization: React.PropTypes.object, - project: React.PropTypes.object + organization: PropTypes.object, + project: PropTypes.object }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectReleases/index.jsx b/src/sentry/static/sentry/app/views/projectReleases/index.jsx index a144029b64b6c9..58070f56d041ec 100644 --- a/src/sentry/static/sentry/app/views/projectReleases/index.jsx +++ b/src/sentry/static/sentry/app/views/projectReleases/index.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import {browserHistory} from 'react-router'; @@ -13,8 +14,8 @@ import ReleaseList from './releaseList'; const ProjectReleases = React.createClass({ propTypes: { - defaultQuery: React.PropTypes.string, - setProjectNavSection: React.PropTypes.func + defaultQuery: PropTypes.string, + setProjectNavSection: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectReleases/releaseList.jsx b/src/sentry/static/sentry/app/views/projectReleases/releaseList.jsx index f35b3fe8b85fd6..f15a4fcb5dc7d6 100644 --- a/src/sentry/static/sentry/app/views/projectReleases/releaseList.jsx +++ b/src/sentry/static/sentry/app/views/projectReleases/releaseList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReleaseStats from '../../components/releaseStats'; import Count from '../../components/count'; @@ -7,9 +8,9 @@ import LatestDeployOrReleaseTime from '../../components/latestDeployOrReleaseTim const ReleaseList = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - releaseList: React.PropTypes.array.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + releaseList: PropTypes.array.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/views/projectSavedSearches.jsx b/src/sentry/static/sentry/app/views/projectSavedSearches.jsx index 75dce29fe7174f..0c4b3862bda5e2 100644 --- a/src/sentry/static/sentry/app/views/projectSavedSearches.jsx +++ b/src/sentry/static/sentry/app/views/projectSavedSearches.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -9,13 +10,13 @@ import OrganizationState from '../mixins/organizationState'; const SavedSearchRow = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - data: React.PropTypes.object.isRequired, - access: React.PropTypes.object.isRequired, - onDefault: React.PropTypes.func.isRequired, - onUserDefault: React.PropTypes.func.isRequired, - onRemove: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + data: PropTypes.object.isRequired, + access: PropTypes.object.isRequired, + onDefault: PropTypes.func.isRequired, + onUserDefault: PropTypes.func.isRequired, + onRemove: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectSettings/index.jsx b/src/sentry/static/sentry/app/views/projectSettings/index.jsx index 3805bc58326bdd..cf83541a69716f 100644 --- a/src/sentry/static/sentry/app/views/projectSettings/index.jsx +++ b/src/sentry/static/sentry/app/views/projectSettings/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import OrganizationState from '../../mixins/organizationState'; import ApiMixin from '../../mixins/apiMixin'; @@ -9,12 +10,12 @@ import {t} from '../../locale'; const ProjectSettings = React.createClass({ propTypes: { - setProjectNavSection: React.PropTypes.func + setProjectNavSection: PropTypes.func }, contextTypes: { - location: React.PropTypes.object, - organization: React.PropTypes.object + location: PropTypes.object, + organization: PropTypes.object }, mixins: [ApiMixin, OrganizationState], diff --git a/src/sentry/static/sentry/app/views/projectUserReportSettings.jsx b/src/sentry/static/sentry/app/views/projectUserReportSettings.jsx index 3f9f9bd5e53e8a..db83edb5114167 100644 --- a/src/sentry/static/sentry/app/views/projectUserReportSettings.jsx +++ b/src/sentry/static/sentry/app/views/projectUserReportSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -8,9 +9,9 @@ import {t} from '../locale'; const ProjectFeedbackSettingsForm = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - initialData: React.PropTypes.object.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + initialData: PropTypes.object.isRequired }, mixins: [ApiMixin], @@ -109,7 +110,7 @@ const ProjectFeedbackSettingsForm = React.createClass({ const ProjectUserReportSettings = React.createClass({ propTypes: { - setProjectNavSection: React.PropTypes.func + setProjectNavSection: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projectUserReports.jsx b/src/sentry/static/sentry/app/views/projectUserReports.jsx index 3698cc7eda47df..8c7ae0ebe118d8 100644 --- a/src/sentry/static/sentry/app/views/projectUserReports.jsx +++ b/src/sentry/static/sentry/app/views/projectUserReports.jsx @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import PropTypes from 'prop-types'; import React from 'react'; import {browserHistory, Link} from 'react-router'; import ApiMixin from '../mixins/apiMixin'; @@ -14,9 +15,9 @@ import {t} from '../locale'; const ProjectUserReports = React.createClass({ propTypes: { - defaultQuery: React.PropTypes.string, - defaultStatus: React.PropTypes.string, - setProjectNavSection: React.PropTypes.func + defaultQuery: PropTypes.string, + defaultStatus: PropTypes.string, + setProjectNavSection: PropTypes.func }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/projects/projectContext.jsx b/src/sentry/static/sentry/app/views/projects/projectContext.jsx index 8f275cbe2bd71a..8cad6a58b6e7cb 100644 --- a/src/sentry/static/sentry/app/views/projects/projectContext.jsx +++ b/src/sentry/static/sentry/app/views/projects/projectContext.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import DocumentTitle from 'react-document-title'; @@ -29,8 +30,8 @@ const ERROR_TYPES = { */ const ProjectContext = React.createClass({ propTypes: { - projectId: React.PropTypes.string, - orgId: React.PropTypes.string + projectId: PropTypes.string, + orgId: PropTypes.string }, childContextTypes: { diff --git a/src/sentry/static/sentry/app/views/releaseAllEvents.jsx b/src/sentry/static/sentry/app/views/releaseAllEvents.jsx index a01fbfb2e69af6..a56af63dbab38b 100644 --- a/src/sentry/static/sentry/app/views/releaseAllEvents.jsx +++ b/src/sentry/static/sentry/app/views/releaseAllEvents.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import GroupList from '../components/groupList'; @@ -5,7 +6,7 @@ import {t} from '../locale'; const ReleaseAllEvents = React.createClass({ contextTypes: { - release: React.PropTypes.object + release: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/views/releaseArtifacts.jsx b/src/sentry/static/sentry/app/views/releaseArtifacts.jsx index 26298020edec7b..1d348d7d93dcc4 100644 --- a/src/sentry/static/sentry/app/views/releaseArtifacts.jsx +++ b/src/sentry/static/sentry/app/views/releaseArtifacts.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; @@ -14,7 +15,7 @@ import {t} from '../locale'; const ReleaseArtifacts = React.createClass({ contextTypes: { - release: React.PropTypes.object + release: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/releaseDetails.jsx b/src/sentry/static/sentry/app/views/releaseDetails.jsx index 7b2f22a38abcf8..a7860b8b6a3537 100644 --- a/src/sentry/static/sentry/app/views/releaseDetails.jsx +++ b/src/sentry/static/sentry/app/views/releaseDetails.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ApiMixin from '../mixins/apiMixin'; import Count from '../components/count'; @@ -13,15 +14,15 @@ import {t} from '../locale'; const ReleaseDetails = React.createClass({ propTypes: { - setProjectNavSection: React.PropTypes.func + setProjectNavSection: PropTypes.func }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, childContextTypes: { - release: React.PropTypes.object + release: PropTypes.object }, mixins: [ApiMixin, ProjectState], diff --git a/src/sentry/static/sentry/app/views/releaseNewEvents.jsx b/src/sentry/static/sentry/app/views/releaseNewEvents.jsx index 58faf143ffebda..1f21917bf67712 100644 --- a/src/sentry/static/sentry/app/views/releaseNewEvents.jsx +++ b/src/sentry/static/sentry/app/views/releaseNewEvents.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import {Link} from 'react-router'; import GroupList from '../components/groupList'; @@ -5,7 +6,7 @@ import {t} from '../locale'; const ReleaseNewEvents = React.createClass({ contextTypes: { - release: React.PropTypes.object + release: PropTypes.object }, render() { diff --git a/src/sentry/static/sentry/app/views/releases/releaseCommits.jsx b/src/sentry/static/sentry/app/views/releases/releaseCommits.jsx index 47f2bd3114e7c0..d2427f8b5fdda4 100644 --- a/src/sentry/static/sentry/app/views/releases/releaseCommits.jsx +++ b/src/sentry/static/sentry/app/views/releases/releaseCommits.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import LoadingIndicator from '../../components/loadingIndicator'; @@ -15,9 +16,9 @@ import {t} from '../../locale'; const CommitLink = React.createClass({ propTypes: { - commitId: React.PropTypes.string, - repository: React.PropTypes.object, - inline: React.PropTypes.bool + commitId: PropTypes.string, + repository: PropTypes.object, + inline: PropTypes.bool }, getCommitUrl() { @@ -39,8 +40,7 @@ const CommitLink = React.createClass({ ? + target="_blank"> {this.props.repository.provider.id == 'github' && } {this.props.repository.provider.id == 'bitbucket' && @@ -55,11 +55,11 @@ const CommitLink = React.createClass({ const ReleaseCommit = React.createClass({ propTypes: { - commitId: React.PropTypes.string, - commitMessage: React.PropTypes.string, - commitDateCreated: React.PropTypes.string, - author: React.PropTypes.object, - repository: React.PropTypes.object + commitId: PropTypes.string, + commitMessage: PropTypes.string, + commitDateCreated: PropTypes.string, + author: PropTypes.object, + repository: PropTypes.object }, renderMessage(message) { @@ -223,16 +223,14 @@ const ReleaseCommits = React.createClass({ style={{marginLeft: 3, marginRight: -3}} /> - } - > + }> { this.setActiveRepo(null); }} - isActive={this.state.activeRepo === null} - > + isActive={this.state.activeRepo === null}> All Repositories {Object.keys(commitsByRepository).map(repository => { @@ -243,8 +241,7 @@ const ReleaseCommits = React.createClass({ onClick={() => { this.setActiveRepo(repository); }} - isActive={this.state.activeRepo === repository} - > + isActive={this.state.activeRepo === repository}> {repository} ); diff --git a/src/sentry/static/sentry/app/views/releases/releaseOverview.jsx b/src/sentry/static/sentry/app/views/releases/releaseOverview.jsx index 36ed11f9d24551..602cc2498565e6 100644 --- a/src/sentry/static/sentry/app/views/releases/releaseOverview.jsx +++ b/src/sentry/static/sentry/app/views/releases/releaseOverview.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import LoadingIndicator from '../../components/loadingIndicator'; @@ -16,7 +17,7 @@ import {t} from '../../locale'; const ReleaseOverview = React.createClass({ contextTypes: { - release: React.PropTypes.object + release: PropTypes.object }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/routeError.jsx b/src/sentry/static/sentry/app/views/routeError.jsx index 30f0dc6da45ec4..b7467313cd7bca 100644 --- a/src/sentry/static/sentry/app/views/routeError.jsx +++ b/src/sentry/static/sentry/app/views/routeError.jsx @@ -1,12 +1,13 @@ import $ from 'jquery'; +import PropTypes from 'prop-types'; import Raven from 'raven-js'; import React from 'react'; const RouteError = React.createClass({ propTypes: { - error: React.PropTypes.object.isRequired, + error: PropTypes.object.isRequired, // not used yet, but future proofing - onRetry: React.PropTypes.func + onRetry: PropTypes.func }, componentWillMount() { diff --git a/src/sentry/static/sentry/app/views/ruleEditor/index.jsx b/src/sentry/static/sentry/app/views/ruleEditor/index.jsx index af8ff689eb1cde..1847d859d2f35b 100644 --- a/src/sentry/static/sentry/app/views/ruleEditor/index.jsx +++ b/src/sentry/static/sentry/app/views/ruleEditor/index.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import $ from 'jquery'; @@ -10,11 +11,11 @@ import RuleNodeList from './ruleNodeList'; const RuleEditor = React.createClass({ propTypes: { - actions: React.PropTypes.array.isRequired, - conditions: React.PropTypes.array.isRequired, - rule: React.PropTypes.object.isRequired, - project: React.PropTypes.object.isRequired, - organization: React.PropTypes.object.isRequired + actions: PropTypes.array.isRequired, + conditions: PropTypes.array.isRequired, + rule: PropTypes.object.isRequired, + project: PropTypes.object.isRequired, + organization: PropTypes.object.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/ruleEditor/ruleNode.jsx b/src/sentry/static/sentry/app/views/ruleEditor/ruleNode.jsx index b16b7fdc5ef66c..3b0a4f4574368f 100644 --- a/src/sentry/static/sentry/app/views/ruleEditor/ruleNode.jsx +++ b/src/sentry/static/sentry/app/views/ruleEditor/ruleNode.jsx @@ -1,14 +1,15 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import $ from 'jquery'; const RuleNode = React.createClass({ propTypes: { - data: React.PropTypes.object.isRequired, - node: React.PropTypes.shape({ - html: React.PropTypes.string.isRequired + data: PropTypes.object.isRequired, + node: PropTypes.shape({ + html: PropTypes.string.isRequired }).isRequired, - onDelete: React.PropTypes.func.isRequired + onDelete: PropTypes.func.isRequired }, componentDidMount() { diff --git a/src/sentry/static/sentry/app/views/ruleEditor/ruleNodeList.jsx b/src/sentry/static/sentry/app/views/ruleEditor/ruleNodeList.jsx index d516b070d7062e..fd8cc503023f0a 100644 --- a/src/sentry/static/sentry/app/views/ruleEditor/ruleNodeList.jsx +++ b/src/sentry/static/sentry/app/views/ruleEditor/ruleNodeList.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SelectInput from '../../components/selectInput'; @@ -5,8 +6,8 @@ import RuleNode from './ruleNode'; const RuleNodeList = React.createClass({ propTypes: { - initialItems: React.PropTypes.array, - nodes: React.PropTypes.array.isRequired + initialItems: PropTypes.array, + nodes: PropTypes.array.isRequired }, getInitialState() { diff --git a/src/sentry/static/sentry/app/views/sharedGroupDetails/sharedGroupHeader.jsx b/src/sentry/static/sentry/app/views/sharedGroupDetails/sharedGroupHeader.jsx index 66c5355a9a8359..7151bce484614c 100644 --- a/src/sentry/static/sentry/app/views/sharedGroupDetails/sharedGroupHeader.jsx +++ b/src/sentry/static/sentry/app/views/sharedGroupDetails/sharedGroupHeader.jsx @@ -1,8 +1,9 @@ +import PropTypes from 'prop-types'; import React from 'react'; const SharedGroupHeader = React.createClass({ propTypes: { - group: React.PropTypes.object.isRequired + group: PropTypes.object.isRequired }, render() { diff --git a/src/sentry/static/sentry/app/views/stream.jsx b/src/sentry/static/sentry/app/views/stream.jsx index 950c34e28fc0ff..0b680e7118c7ac 100644 --- a/src/sentry/static/sentry/app/views/stream.jsx +++ b/src/sentry/static/sentry/app/views/stream.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import {browserHistory} from 'react-router'; @@ -27,11 +28,11 @@ import {t, tn, tct} from '../locale'; const Stream = React.createClass({ propTypes: { - defaultSort: React.PropTypes.string, - defaultStatsPeriod: React.PropTypes.string, - defaultQuery: React.PropTypes.string, - maxItems: React.PropTypes.number, - setProjectNavSection: React.PropTypes.func + defaultSort: PropTypes.string, + defaultStatsPeriod: PropTypes.string, + defaultQuery: PropTypes.string, + maxItems: PropTypes.number, + setProjectNavSection: PropTypes.func }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/stream/actionLink.jsx b/src/sentry/static/sentry/app/views/stream/actionLink.jsx index 74b4a69fdc8261..d0a9dbf3809cfe 100644 --- a/src/sentry/static/sentry/app/views/stream/actionLink.jsx +++ b/src/sentry/static/sentry/app/views/stream/actionLink.jsx @@ -1,5 +1,6 @@ import Modal from 'react-bootstrap/lib/Modal'; import PureRenderMixin from 'react-addons-pure-render-mixin'; +import PropTypes from 'prop-types'; import React from 'react'; import SelectedGroupStore from '../../stores/selectedGroupStore'; import TooltipMixin from '../../mixins/tooltip'; @@ -9,15 +10,15 @@ import _ from 'lodash'; // TODO(mitsuhiko): very unclear how to translate this const ActionLink = React.createClass({ propTypes: { - confirmationQuestion: React.PropTypes.any, - buttonTitle: React.PropTypes.string, - confirmLabel: React.PropTypes.any, - disabled: React.PropTypes.bool, - onAction: React.PropTypes.func.isRequired, - onlyIfBulk: React.PropTypes.bool, - selectAllActive: React.PropTypes.bool.isRequired, // "select all" checkbox - tooltip: React.PropTypes.string, - extraDescription: React.PropTypes.string + confirmationQuestion: PropTypes.any, + buttonTitle: PropTypes.string, + confirmLabel: PropTypes.any, + disabled: PropTypes.bool, + onAction: PropTypes.func.isRequired, + onlyIfBulk: PropTypes.bool, + selectAllActive: PropTypes.bool.isRequired, // "select all" checkbox + tooltip: PropTypes.string, + extraDescription: PropTypes.string }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/stream/actions.jsx b/src/sentry/static/sentry/app/views/stream/actions.jsx index 7324a2bae19cd9..553edd036bfbd9 100644 --- a/src/sentry/static/sentry/app/views/stream/actions.jsx +++ b/src/sentry/static/sentry/app/views/stream/actions.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Reflux from 'reflux'; import ApiMixin from '../../mixins/apiMixin'; @@ -19,11 +20,11 @@ import Checkbox from '../../components/checkbox'; const IgnoreActions = React.createClass({ propTypes: { - anySelected: React.PropTypes.bool.isRequired, - allInQuerySelected: React.PropTypes.bool.isRequired, - pageSelected: React.PropTypes.bool.isRequired, - onUpdate: React.PropTypes.func.isRequired, - query: React.PropTypes.string + anySelected: PropTypes.bool.isRequired, + allInQuerySelected: PropTypes.bool.isRequired, + pageSelected: PropTypes.bool.isRequired, + onUpdate: PropTypes.func.isRequired, + query: PropTypes.string }, getInitialState() { @@ -249,15 +250,15 @@ const IgnoreActions = React.createClass({ const ResolveActions = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - hasRelease: React.PropTypes.bool.isRequired, - latestRelease: React.PropTypes.object, - anySelected: React.PropTypes.bool.isRequired, - allInQuerySelected: React.PropTypes.bool.isRequired, - pageSelected: React.PropTypes.bool.isRequired, - onUpdate: React.PropTypes.func.isRequired, - query: React.PropTypes.string + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + hasRelease: PropTypes.bool.isRequired, + latestRelease: PropTypes.object, + anySelected: PropTypes.bool.isRequired, + allInQuerySelected: PropTypes.bool.isRequired, + pageSelected: PropTypes.bool.isRequired, + onUpdate: PropTypes.func.isRequired, + query: PropTypes.string }, getInitialState() { @@ -368,17 +369,17 @@ const ResolveActions = React.createClass({ const StreamActions = React.createClass({ propTypes: { - allResultsVisible: React.PropTypes.bool, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - groupIds: React.PropTypes.instanceOf(Array).isRequired, - onRealtimeChange: React.PropTypes.func.isRequired, - onSelectStatsPeriod: React.PropTypes.func.isRequired, - realtimeActive: React.PropTypes.bool.isRequired, - statsPeriod: React.PropTypes.string.isRequired, - query: React.PropTypes.string.isRequired, - hasReleases: React.PropTypes.bool, - latestRelease: React.PropTypes.object + allResultsVisible: PropTypes.bool, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + groupIds: PropTypes.instanceOf(Array).isRequired, + onRealtimeChange: PropTypes.func.isRequired, + onSelectStatsPeriod: PropTypes.func.isRequired, + realtimeActive: PropTypes.bool.isRequired, + statsPeriod: PropTypes.string.isRequired, + query: PropTypes.string.isRequired, + hasReleases: PropTypes.bool, + latestRelease: PropTypes.object }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/stream/filters.jsx b/src/sentry/static/sentry/app/views/stream/filters.jsx index 518ba42ee01be6..f6d1ab62868e41 100644 --- a/src/sentry/static/sentry/app/views/stream/filters.jsx +++ b/src/sentry/static/sentry/app/views/stream/filters.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import SavedSearchSelector from './savedSearchSelector'; @@ -7,30 +8,30 @@ import {t} from '../../locale'; const StreamFilters = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - access: React.PropTypes.object.isRequired, - tags: React.PropTypes.object.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + access: PropTypes.object.isRequired, + tags: PropTypes.object.isRequired, - searchId: React.PropTypes.string, - savedSearchList: React.PropTypes.array.isRequired, + searchId: PropTypes.string, + savedSearchList: PropTypes.array.isRequired, - defaultQuery: React.PropTypes.string, - sort: React.PropTypes.string, - filter: React.PropTypes.string, - query: React.PropTypes.string, - isSearchDisabled: React.PropTypes.bool, - queryCount: React.PropTypes.number, - queryMaxCount: React.PropTypes.number, + defaultQuery: PropTypes.string, + sort: PropTypes.string, + filter: PropTypes.string, + query: PropTypes.string, + isSearchDisabled: PropTypes.bool, + queryCount: PropTypes.number, + queryMaxCount: PropTypes.number, - onSortChange: React.PropTypes.func, - onSearch: React.PropTypes.func, - onSidebarToggle: React.PropTypes.func, - onSavedSearchCreate: React.PropTypes.func.isRequired + onSortChange: PropTypes.func, + onSearch: PropTypes.func, + onSidebarToggle: PropTypes.func, + onSavedSearchCreate: PropTypes.func.isRequired }, contextTypes: { - location: React.PropTypes.object + location: PropTypes.object }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/views/stream/savedSearchSelector.jsx b/src/sentry/static/sentry/app/views/stream/savedSearchSelector.jsx index ee2c948605d196..27514c4b33ce0e 100644 --- a/src/sentry/static/sentry/app/views/stream/savedSearchSelector.jsx +++ b/src/sentry/static/sentry/app/views/stream/savedSearchSelector.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import Modal from 'react-bootstrap/lib/Modal'; import {Link} from 'react-router'; @@ -12,16 +13,16 @@ import {BooleanField, FormState, TextField} from '../../components/forms'; const SaveSearchButton = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - access: React.PropTypes.object.isRequired, - query: React.PropTypes.string.isRequired, - disabled: React.PropTypes.bool, - style: React.PropTypes.object, - tooltip: React.PropTypes.string, - buttonTitle: React.PropTypes.string, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + access: PropTypes.object.isRequired, + query: PropTypes.string.isRequired, + disabled: PropTypes.bool, + style: PropTypes.object, + tooltip: PropTypes.string, + buttonTitle: PropTypes.string, - onSave: React.PropTypes.func.isRequired + onSave: PropTypes.func.isRequired }, mixins: [ApiMixin], @@ -182,14 +183,14 @@ const SaveSearchButton = React.createClass({ const SavedSearchSelector = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - searchId: React.PropTypes.string, - access: React.PropTypes.object.isRequired, - savedSearchList: React.PropTypes.array.isRequired, - queryCount: React.PropTypes.number, - queryMaxCount: React.PropTypes.number, - onSavedSearchCreate: React.PropTypes.func.isRequired + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + searchId: PropTypes.string, + access: PropTypes.object.isRequired, + savedSearchList: PropTypes.array.isRequired, + queryCount: PropTypes.number, + queryMaxCount: PropTypes.number, + onSavedSearchCreate: PropTypes.func.isRequired }, mixins: [ApiMixin], diff --git a/src/sentry/static/sentry/app/views/stream/searchBar.jsx b/src/sentry/static/sentry/app/views/stream/searchBar.jsx index 02bb8984986701..0e8d66c5d81bf9 100644 --- a/src/sentry/static/sentry/app/views/stream/searchBar.jsx +++ b/src/sentry/static/sentry/app/views/stream/searchBar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import Reflux from 'reflux'; @@ -16,17 +17,17 @@ import SearchDropdown from './searchDropdown'; const SearchBar = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, - defaultQuery: React.PropTypes.string, - query: React.PropTypes.string, - defaultSearchItems: React.PropTypes.array.isRequired, - disabled: React.PropTypes.bool, - placeholder: React.PropTypes.string, + defaultQuery: PropTypes.string, + query: PropTypes.string, + defaultSearchItems: PropTypes.array.isRequired, + disabled: PropTypes.bool, + placeholder: PropTypes.string, - onQueryChange: React.PropTypes.func, - onSearch: React.PropTypes.func + onQueryChange: PropTypes.func, + onSearch: PropTypes.func }, mixins: [ diff --git a/src/sentry/static/sentry/app/views/stream/searchDropdown.jsx b/src/sentry/static/sentry/app/views/stream/searchDropdown.jsx index d9bd80c3d843d1..c58b29a378094b 100644 --- a/src/sentry/static/sentry/app/views/stream/searchDropdown.jsx +++ b/src/sentry/static/sentry/app/views/stream/searchDropdown.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; @@ -7,10 +8,10 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; const SearchDropdown = React.createClass({ propTypes: { - items: React.PropTypes.array.isRequired, - searchSubstring: React.PropTypes.string, - onClick: React.PropTypes.func.isRequired, - loading: React.PropTypes.bool + items: PropTypes.array.isRequired, + searchSubstring: PropTypes.string, + onClick: PropTypes.func.isRequired, + loading: PropTypes.bool }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/views/stream/sidebar.jsx b/src/sentry/static/sentry/app/views/stream/sidebar.jsx index 7f472c71b311e8..a22e76cb8817c5 100644 --- a/src/sentry/static/sentry/app/views/stream/sidebar.jsx +++ b/src/sentry/static/sentry/app/views/stream/sidebar.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import _ from 'lodash'; import StreamTagFilter from './tagFilter'; @@ -9,14 +10,14 @@ let TEXT_FILTER_DEBOUNCE_IN_MS = 300; const StreamSidebar = React.createClass({ propTypes: { - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - - tags: React.PropTypes.object.isRequired, - query: React.PropTypes.string, - onQueryChange: React.PropTypes.func.isRequired, - defaultQuery: React.PropTypes.string, - loading: React.PropTypes.bool + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + + tags: PropTypes.object.isRequired, + query: PropTypes.string, + onQueryChange: PropTypes.func.isRequired, + defaultQuery: PropTypes.string, + loading: PropTypes.bool }, getDefaultProps() { diff --git a/src/sentry/static/sentry/app/views/stream/sortOptions.jsx b/src/sentry/static/sentry/app/views/stream/sortOptions.jsx index c010e75b89e7c2..2c8a69d7c77e7e 100644 --- a/src/sentry/static/sentry/app/views/stream/sortOptions.jsx +++ b/src/sentry/static/sentry/app/views/stream/sortOptions.jsx @@ -1,4 +1,5 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; +import PropTypes from 'prop-types'; import React from 'react'; import DropdownLink from '../../components/dropdownLink'; import MenuItem from '../../components/menuItem'; @@ -6,8 +7,8 @@ import {t} from '../../locale'; const SortOptions = React.createClass({ propTypes: { - sort: React.PropTypes.string, - onSelect: React.PropTypes.func + sort: PropTypes.string, + onSelect: PropTypes.func }, mixins: [PureRenderMixin], diff --git a/src/sentry/static/sentry/app/views/stream/tagFilter.jsx b/src/sentry/static/sentry/app/views/stream/tagFilter.jsx index 0f8eb354365039..0b445124e6d7f8 100644 --- a/src/sentry/static/sentry/app/views/stream/tagFilter.jsx +++ b/src/sentry/static/sentry/app/views/stream/tagFilter.jsx @@ -1,14 +1,15 @@ +import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import _ from 'lodash'; const StreamTagFilter = React.createClass({ propTypes: { - tag: React.PropTypes.object.isRequired, - orgId: React.PropTypes.string.isRequired, - projectId: React.PropTypes.string.isRequired, - value: React.PropTypes.string, - onSelect: React.PropTypes.func + tag: PropTypes.object.isRequired, + orgId: PropTypes.string.isRequired, + projectId: PropTypes.string.isRequired, + value: PropTypes.string, + onSelect: PropTypes.func }, statics: { diff --git a/src/sentry/static/sentry/app/views/teamSettings.jsx b/src/sentry/static/sentry/app/views/teamSettings.jsx index e56d17f5a2d01d..f7014732c729b8 100644 --- a/src/sentry/static/sentry/app/views/teamSettings.jsx +++ b/src/sentry/static/sentry/app/views/teamSettings.jsx @@ -1,3 +1,4 @@ +import PropTypes from 'prop-types'; import React from 'react'; import AsyncView from './asyncView'; @@ -7,8 +8,8 @@ import {t} from '../locale'; export default class TeamSettings extends AsyncView { static propTypes = { ...AsyncView.propTypes, - team: React.PropTypes.object.isRequired, - onTeamChange: React.PropTypes.func.isRequired + team: PropTypes.object.isRequired, + onTeamChange: PropTypes.func.isRequired }; getTitle() { diff --git a/yarn.lock b/yarn.lock index 132ef339146e98..56575d9d5a4059 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@hypnosphi/fuse.js@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@hypnosphi/fuse.js/-/fuse.js-3.0.9.tgz#ea99f6121b4a8f065b4c71f85595db2714498807" + "@percy-io/react-percy-api-client@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@percy-io/react-percy-api-client/-/react-percy-api-client-0.1.4.tgz#7172cc85ea9079d6806aab5295c6f01e7442d326" @@ -22,7 +26,7 @@ walk "^2.3.9" yargs "^7.0.2" -"@storybook/addon-actions@3.2.0", "@storybook/addon-actions@^3.2.0": +"@storybook/addon-actions@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.2.0.tgz#e5d7f63fec89cae1b98bbc124694153b7409317f" dependencies: @@ -33,11 +37,23 @@ react-inspector "^2.1.1" uuid "^3.1.0" -"@storybook/addon-info@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-info/-/addon-info-3.2.0.tgz#0036b947464f6f1a657b14ea4d0f070546679aab" +"@storybook/addon-actions@^3.2.6": + version "3.2.6" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.2.6.tgz#d8e476188a288f49f36a8482175bc2c1898dfc28" dependencies: - "@storybook/addons" "^3.2.0" + "@storybook/addons" "^3.2.6" + deep-equal "^1.0.1" + json-stringify-safe "^5.0.1" + prop-types "^15.5.10" + react-inspector "^2.1.1" + uuid "^3.1.0" + +"@storybook/addon-info@^3.2.0": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-info/-/addon-info-3.2.9.tgz#50daca12d216f8338843023f13030cd92ab9789e" + dependencies: + "@storybook/addons" "^3.2.6" + "@storybook/components" "^3.2.7" babel-runtime "^6.23.0" global "^4.3.2" marksy "^2.0.0" @@ -45,16 +61,20 @@ react-addons-create-fragment "^15.5.3" util-deprecate "^1.0.2" -"@storybook/addon-links@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.2.0.tgz#28c73d1fd7fa37591139f3fb16e60a43113ad643" +"@storybook/addon-links@^3.2.6": + version "3.2.6" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.2.6.tgz#93029ecee8a1a1939f01381c06ed19327acd746b" dependencies: - "@storybook/addons" "^3.2.0" + "@storybook/addons" "^3.2.6" "@storybook/addons@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.2.0.tgz#e1446cc5613af179701673276267cee71859bf41" +"@storybook/addons@^3.2.6": + version "3.2.6" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.2.6.tgz#c7974db36bd1b969d8ca3776f57fd955447dc7ed" + "@storybook/channel-postmessage@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.2.0.tgz#612ff53120bf266660cb9328bac9ad671228a2f7" @@ -67,6 +87,14 @@ version "3.2.0" resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.2.0.tgz#d75395212db76b49e3335f50cce5bc763cf0b5c6" +"@storybook/components@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.2.7.tgz#7d4c7221851260e4236bbb3ef82a6494b23e5ec9" + dependencies: + glamor "^2.20.40" + glamorous "^4.1.2" + prop-types "^15.5.10" + "@storybook/react-fuzzy@^0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@storybook/react-fuzzy/-/react-fuzzy-0.4.0.tgz#2961e8a1f6c1afcce97e9e9a14d1dfe9d9061087" @@ -76,22 +104,22 @@ fuse.js "^3.0.1" prop-types "^15.5.9" -"@storybook/react@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.2.0.tgz#bcd681d2bb81b0f361eeeb6ad5aa86ba14a26216" +"@storybook/react@^3.2.0": + version "3.2.8" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.2.8.tgz#7d43ef450559b7cf3b3ecc17cc54d5a09d5ea402" dependencies: - "@storybook/addon-actions" "^3.2.0" - "@storybook/addon-links" "^3.2.0" - "@storybook/addons" "^3.2.0" + "@storybook/addon-actions" "^3.2.6" + "@storybook/addon-links" "^3.2.6" + "@storybook/addons" "^3.2.6" "@storybook/channel-postmessage" "^3.2.0" - "@storybook/ui" "^3.2.0" + "@storybook/ui" "^3.2.7" airbnb-js-shims "^1.1.1" autoprefixer "^7.1.1" babel-core "^6.25.0" babel-loader "^7.0.0" babel-plugin-react-docgen "^1.6.0" - babel-preset-es2015 "^6.24.1" - babel-preset-es2016 "^6.24.1" + babel-preset-env "^1.6.0" + babel-preset-minify "^0.2.0" babel-preset-react "^6.24.1" babel-preset-react-app "^3.0.0" babel-preset-stage-0 "^6.24.1" @@ -105,8 +133,8 @@ express "^4.15.3" file-loader "^0.11.1" find-cache-dir "^1.0.0" - glamor "^2.20.25" - glamorous "^3.22.1" + glamor "^2.20.40" + glamorous "^4.1.2" global "^4.3.2" json-loader "^0.5.4" json-stringify-safe "^5.0.1" @@ -117,7 +145,7 @@ postcss-loader "^2.0.5" prop-types "^15.5.10" qs "^6.4.0" - react-modal "^1.7.7" + react-modal "^2.2.4" redux "^3.6.0" request "^2.81.0" serve-favicon "^2.4.3" @@ -130,18 +158,20 @@ webpack-dev-middleware "^1.10.2" webpack-hot-middleware "^2.18.0" -"@storybook/ui@^3.2.0": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.2.3.tgz#9579c191a1695d3d5aaabcef93a7a5456d8f19af" +"@storybook/ui@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.2.7.tgz#c07dd5523e2c83d9f8ac5a7982c305cc59f34e78" dependencies: + "@hypnosphi/fuse.js" "^3.0.9" + "@storybook/components" "^3.2.7" "@storybook/react-fuzzy" "^0.4.0" babel-runtime "^6.23.0" deep-equal "^1.0.1" events "^1.1.1" - fuzzysearch "^1.0.3" global "^4.3.2" json-stringify-safe "^5.0.1" keycode "^2.1.8" + lodash.debounce "^4.0.8" lodash.pick "^4.4.0" lodash.sortby "^4.7.0" mantra-core "^1.7.0" @@ -151,7 +181,7 @@ react-icons "^2.2.5" react-inspector "^2.1.1" react-komposer "^2.0.0" - react-modal "^1.7.7" + react-modal "^2.2.4" react-split-pane "^0.1.65" react-treebeard "^2.0.3" redux "^3.6.0" @@ -480,7 +510,7 @@ babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, bab esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@6.21.0: +babel-core@6.21.0, babel-core@^6.0.0: version "6.21.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724" dependencies: @@ -504,7 +534,7 @@ babel-core@6.21.0: slash "^1.0.0" source-map "^0.5.0" -babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.25.0: +babel-core@^6.24.1, babel-core@^6.25.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: @@ -600,6 +630,10 @@ babel-helper-define-map@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" +babel-helper-evaluate-path@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08" + 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" @@ -617,6 +651,10 @@ babel-helper-explode-class@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" +babel-helper-flip-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec" + 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" @@ -641,6 +679,18 @@ babel-helper-hoist-variables@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-helper-is-nodes-equiv@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" + +babel-helper-is-void-0@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb" + +babel-helper-mark-eval-scopes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2" + 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" @@ -666,6 +716,10 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" +babel-helper-remove-or-void@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386" + 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" @@ -677,6 +731,10 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" +babel-helper-to-multiple-sequence-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318" + babel-helpers@^6.16.0, babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" @@ -747,6 +805,71 @@ babel-plugin-lodash@^3.2.11: glob "^7.1.1" lodash "^4.17.2" +babel-plugin-minify-builtins@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82" + dependencies: + babel-helper-evaluate-path "^0.2.0" + +babel-plugin-minify-constant-folding@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970" + dependencies: + babel-helper-evaluate-path "^0.2.0" + +babel-plugin-minify-dead-code-elimination@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3" + dependencies: + babel-helper-evaluate-path "^0.2.0" + babel-helper-mark-eval-scopes "^0.2.0" + babel-helper-remove-or-void "^0.2.0" + lodash.some "^4.6.0" + +babel-plugin-minify-flip-comparisons@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5" + dependencies: + babel-helper-is-void-0 "^0.2.0" + +babel-plugin-minify-guarded-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab" + dependencies: + babel-helper-flip-expressions "^0.2.0" + +babel-plugin-minify-infinity@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03" + +babel-plugin-minify-mangle-names@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529" + dependencies: + babel-helper-mark-eval-scopes "^0.2.0" + +babel-plugin-minify-numeric-literals@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1" + +babel-plugin-minify-replace@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0" + +babel-plugin-minify-simplify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0" + dependencies: + babel-helper-flip-expressions "^0.2.0" + babel-helper-is-nodes-equiv "^0.0.1" + babel-helper-to-multiple-sequence-expressions "^0.2.0" + +babel-plugin-minify-type-constructors@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17" + dependencies: + babel-helper-is-void-0 "^0.2.0" + babel-plugin-react-docgen@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-1.6.0.tgz#9be36121b094da7a1a3ba7911a9e8ea4b0f44da0" @@ -1065,6 +1188,22 @@ babel-plugin-transform-function-bind@^6.22.0: babel-plugin-syntax-function-bind "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-inline-consecutive-adds@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426" + +babel-plugin-transform-member-expression-literals@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz#e06ae305cf48d819822e93a70d79269f04d89eec" + +babel-plugin-transform-merge-sibling-variables@^6.8.6: + version "6.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz#6d21efa5ee4981f71657fae716f9594bb2622aef" + +babel-plugin-transform-minify-booleans@^6.8.3: + version "6.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz#5906ed776d3718250519abf1bace44b0b613ddf9" + babel-plugin-transform-object-rest-spread@6.23.0, babel-plugin-transform-object-rest-spread@^6.20.2, 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" @@ -1072,6 +1211,12 @@ babel-plugin-transform-object-rest-spread@6.23.0, babel-plugin-transform-object- babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-property-literals@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz#67ed5930b34805443452c8b9690c7ebe1e206c40" + dependencies: + esutils "^2.0.2" + babel-plugin-transform-react-constant-elements@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" @@ -1112,12 +1257,34 @@ babel-plugin-transform-regenerator@6.24.1, babel-plugin-transform-regenerator@^6 dependencies: regenerator-transform "0.9.11" +babel-plugin-transform-regexp-constructors@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3" + +babel-plugin-transform-remove-console@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz#fde9d2d3d725530b0fadd8d31078402410386810" + +babel-plugin-transform-remove-debugger@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz#809584d412bf918f071fdf41e1fdb15ea89cdcd5" + +babel-plugin-transform-remove-undefined@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1" + dependencies: + babel-helper-evaluate-path "^0.2.0" + 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-simplify-comparison-operators@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz#a838786baf40cc33a93b95ae09e05591227e43bf" + 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" @@ -1125,6 +1292,10 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-plugin-transform-undefined-to-void@^6.8.3: + version "6.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz#fc52707f6ee1ddc71bb91b0d314fbefdeef9beb4" + babel-polyfill@6.20.0: version "6.20.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7" @@ -1168,6 +1339,41 @@ babel-preset-env@1.5.2: invariant "^2.2.2" semver "^5.3.0" +babel-preset-env@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^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.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.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" @@ -1230,6 +1436,34 @@ babel-preset-latest@^6.16.0: babel-preset-es2016 "^6.24.1" babel-preset-es2017 "^6.24.1" +babel-preset-minify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc" + dependencies: + babel-plugin-minify-builtins "^0.2.0" + babel-plugin-minify-constant-folding "^0.2.0" + babel-plugin-minify-dead-code-elimination "^0.2.0" + babel-plugin-minify-flip-comparisons "^0.2.0" + babel-plugin-minify-guarded-expressions "^0.2.0" + babel-plugin-minify-infinity "^0.2.0" + babel-plugin-minify-mangle-names "^0.2.0" + babel-plugin-minify-numeric-literals "^0.2.0" + babel-plugin-minify-replace "^0.2.0" + babel-plugin-minify-simplify "^0.2.0" + babel-plugin-minify-type-constructors "^0.2.0" + babel-plugin-transform-inline-consecutive-adds "^0.2.0" + babel-plugin-transform-member-expression-literals "^6.8.5" + babel-plugin-transform-merge-sibling-variables "^6.8.6" + babel-plugin-transform-minify-booleans "^6.8.3" + babel-plugin-transform-property-literals "^6.8.5" + babel-plugin-transform-regexp-constructors "^0.2.0" + babel-plugin-transform-remove-console "^6.8.5" + babel-plugin-transform-remove-debugger "^6.8.5" + babel-plugin-transform-remove-undefined "^0.2.0" + babel-plugin-transform-simplify-comparison-operators "^6.8.5" + babel-plugin-transform-undefined-to-void "^6.8.3" + lodash.isplainobject "^4.0.6" + babel-preset-react-app@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.0.1.tgz#8b744cbe47fd57c868e6f913552ceae26ae31860" @@ -1459,9 +1693,9 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -brcast@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef" +brcast@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd" brorand@^1.0.1: version "1.1.0" @@ -1980,14 +2214,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2: - version "15.6.0" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -2355,10 +2581,6 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.16: version "1.3.16" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz#d0e026735754770901ae301a21664cba45d92f7d" -element-class@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e" - elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -2691,11 +2913,7 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exenv@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.0.tgz#3835f127abf075bfe082d0aed4484057c78e3c89" - -exenv@^1.2.1: +exenv@^1.2.0, exenv@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" @@ -3032,10 +3250,6 @@ fuse.js@^3.0.1: version "3.0.5" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.0.5.tgz#b58d85878802321de94461654947b93af1086727" -fuzzysearch@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fuzzysearch/-/fuzzysearch-1.0.3.tgz#dffc80f6d6b04223f2226aa79dd194231096d008" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3090,9 +3304,9 @@ gettext-parser@^1.1.2: encoding "^0.1.12" safe-buffer "^5.1.1" -glamor@^2.20.25: - version "2.20.39" - resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.39.tgz#f2496b5bd252c4337eadae8c6233ce4ea2a81596" +glamor@^2.20.40: + version "2.20.40" + resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05" dependencies: fbjs "^0.8.12" inline-style-prefixer "^3.0.6" @@ -3100,13 +3314,15 @@ glamor@^2.20.25: prop-types "^15.5.10" through "^2.3.8" -glamorous@^3.22.1: - version "3.25.0" - resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-3.25.0.tgz#d6d66c3dfffdc194761469adcbd996d4b70222e1" +glamorous@^4.1.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/glamorous/-/glamorous-4.5.0.tgz#d9428dbaedec265849a7528d0c8c7073d8aa19a1" dependencies: - brcast "^2.0.0" + brcast "^3.0.0" fast-memoize "^2.2.7" html-tag-names "^1.1.1" + is-function "^1.0.1" + is-plain-object "^2.0.4" react-html-attributes "^1.3.0" svg-tag-names "^1.1.0" @@ -3596,6 +3812,10 @@ 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-function@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + 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" @@ -3647,6 +3867,12 @@ 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.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -3715,6 +3941,10 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -4284,10 +4514,6 @@ lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" -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" @@ -4304,7 +4530,7 @@ lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.debounce@^4.0.0: +lodash.debounce@^4.0.0, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -4388,7 +4614,7 @@ lodash.reject@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" -lodash.some@^4.4.0: +lodash.some@^4.4.0, lodash.some@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" @@ -5491,7 +5717,7 @@ prop-types@15.5.8: dependencies: fbjs "^0.8.9" -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.9: +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.5.9: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" dependencies: @@ -5539,7 +5765,7 @@ qs@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz#a9f31142af468cb72b25b30136ba2456834916be" -qs@6.4.0, qs@~6.4.0: +qs@6.4.0, qs@^6.4.0, qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -5547,10 +5773,6 @@ qs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" -qs@^6.4.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - qs@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/qs/-/qs-5.1.0.tgz#4d932e5c7ea411cca76a312d39a606200fd50cd9" @@ -5777,15 +5999,12 @@ react-mentions@^1.0.0: prop-types "^15.5.8" substyle "^6.0.0" -react-modal@^1.7.7: - version "1.9.7" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-1.9.7.tgz#07ef56790b953e3b98ef1e2989e347983c72871d" +react-modal@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-2.2.4.tgz#a32483c3555bd7677f09bca65d82f51da3abcbc0" dependencies: - create-react-class "^15.5.2" - element-class "^0.2.0" - exenv "1.2.0" - lodash.assign "^4.2.0" - prop-types "^15.5.7" + exenv "^1.2.0" + prop-types "^15.5.10" react-dom-factories "^1.0.0" react-overlays@^0.6.3: @@ -7021,7 +7240,7 @@ webidl-conversions@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" -webpack-dev-middleware@1.9.0: +webpack-dev-middleware@1.9.0, webpack-dev-middleware@^1.0.11: version "1.9.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.9.0.tgz#a1c67a3dfd8a5c5d62740aa0babe61758b4c84aa" dependencies: @@ -7030,7 +7249,7 @@ webpack-dev-middleware@1.9.0: path-is-absolute "^1.0.0" range-parser "^1.0.3" -webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.10.2: +webpack-dev-middleware@^1.10.2: version "1.12.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" dependencies: