{ | { | ||||
"order": [ | "order": [ | ||||
"type-annotations", | "type-annotations", | ||||
"instance-variables", | |||||
"static-methods", | "static-methods", | ||||
"lifecycle", | "lifecycle", | ||||
"everything-else", | "everything-else", |
"@types/jest": "22.0.1", | "@types/jest": "22.0.1", | ||||
"@types/jquery": "3.2.11", | "@types/jquery": "3.2.11", | ||||
"@types/keymaster": "1.6.28", | "@types/keymaster": "1.6.28", | ||||
"@types/lodash": "4.14.80", | |||||
"@types/lodash": "4.14.102", | |||||
"@types/prop-types": "15.5.2", | "@types/prop-types": "15.5.2", | ||||
"@types/react": "16.0.29", | "@types/react": "16.0.29", | ||||
"@types/react-dom": "16.0.3", | "@types/react-dom": "16.0.3", | ||||
"rimraf": "2.6.2", | "rimraf": "2.6.2", | ||||
"style-loader": "0.19.0", | "style-loader": "0.19.0", | ||||
"ts-jest": "22.0.1", | "ts-jest": "22.0.1", | ||||
"typescript": "2.6.2", | |||||
"typescript-eslint-parser": "12.0.0", | |||||
"typescript": "2.7.1", | |||||
"typescript-eslint-parser": "13.0.0", | |||||
"webpack": "3.8.1", | "webpack": "3.8.1", | ||||
"webpack-bundle-analyzer": "2.9.0", | "webpack-bundle-analyzer": "2.9.0", | ||||
"webpack-dev-server": "2.9.3" | "webpack-dev-server": "2.9.3" |
} | } | ||||
class App extends React.PureComponent<Props, State> { | class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static childContextTypes = { | static childContextTypes = { | ||||
branchesEnabled: PropTypes.bool.isRequired, | branchesEnabled: PropTypes.bool.isRequired, |
} | } | ||||
export class ComponentContainer extends React.PureComponent<Props, State> { | export class ComponentContainer extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
organizationsEnabled: PropTypes.bool | organizationsEnabled: PropTypes.bool |
} | } | ||||
export default class LocalizationContainer extends React.PureComponent<Props, State> { | export default class LocalizationContainer extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
} | } | ||||
export default class SimpleContainer extends React.PureComponent<Props, State> { | export default class SimpleContainer extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static childContextTypes = { | static childContextTypes = { | ||||
onSonarCloud: PropTypes.bool | onSonarCloud: PropTypes.bool |
} | } | ||||
export default class ComponentNav extends React.PureComponent<Props> { | export default class ComponentNav extends React.PureComponent<Props> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
componentDidMount() { | componentDidMount() { | ||||
this.populateRecentHistory(); | this.populateRecentHistory(); |
} | } | ||||
export default class ComponentNavBranch extends React.PureComponent<Props, State> { | export default class ComponentNavBranch extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
branchesEnabled: PropTypes.bool.isRequired, | branchesEnabled: PropTypes.bool.isRequired, |
} | } | ||||
export default class ComponentNavBranchesMenu extends React.PureComponent<Props, State> { | export default class ComponentNavBranchesMenu extends React.PureComponent<Props, State> { | ||||
private node: HTMLElement | null; | |||||
private node?: HTMLElement | null; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object | router: PropTypes.object |
} | } | ||||
class CreateOrganizationForm extends React.PureComponent<Props, State> { | class CreateOrganizationForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object | router: PropTypes.object |
} | } | ||||
class UserOrganizations extends React.PureComponent<Props, State> { | class UserOrganizations extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { createOrganization: false, loading: true }; | state: State = { createOrganization: false, loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class ProjectsContainer extends React.PureComponent<{}, State> { | export default class ProjectsContainer extends React.PureComponent<{}, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { | state: State = { | ||||
loading: true, | loading: true, | ||||
page: 1, | page: 1, |
} | } | ||||
export default class ScannerContext extends React.PureComponent<Props, State> { | export default class ScannerContext extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = {}; | state: State = {}; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Stacktrace extends React.PureComponent<Props, State> { | export default class Stacktrace extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Workers extends React.PureComponent<{}, State> { | export default class Workers extends React.PureComponent<{}, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { | state: State = { | ||||
canSetWorkerCount: false, | canSetWorkerCount: false, | ||||
formOpen: false, | formOpen: false, |
} | } | ||||
export default class WorkersForm extends React.PureComponent<Props, State> { | export default class WorkersForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { | state: State = { | ||||
loading: true, | loading: true, | ||||
breadcrumbs: [], | breadcrumbs: [], |
} | } | ||||
export default class Component extends React.PureComponent<Props> { | export default class Component extends React.PureComponent<Props> { | ||||
node: HTMLElement; | |||||
node?: HTMLElement | null; | |||||
componentDidMount() { | componentDidMount() { | ||||
this.handleUpdate(); | this.handleUpdate(); | ||||
} | } | ||||
handleScroll() { | handleScroll() { | ||||
const position = this.node.getBoundingClientRect(); | |||||
const { top, bottom } = position; | |||||
if (bottom > window.innerHeight - BOTTOM_OFFSET) { | |||||
window.scrollTo(0, bottom - window.innerHeight + window.pageYOffset + BOTTOM_OFFSET); | |||||
} else if (top < TOP_OFFSET) { | |||||
window.scrollTo(0, top + window.pageYOffset - TOP_OFFSET); | |||||
if (this.node) { | |||||
const position = this.node.getBoundingClientRect(); | |||||
const { top, bottom } = position; | |||||
if (bottom > window.innerHeight - BOTTOM_OFFSET) { | |||||
window.scrollTo(0, bottom - window.innerHeight + window.pageYOffset + BOTTOM_OFFSET); | |||||
} else if (top < TOP_OFFSET) { | |||||
window.scrollTo(0, top + window.pageYOffset - TOP_OFFSET); | |||||
} | |||||
} | } | ||||
} | } | ||||
].filter(Boolean) as Array<{ metric: string; type: string }>); | ].filter(Boolean) as Array<{ metric: string; type: string }>); | ||||
return ( | return ( | ||||
<tr className={classNames({ selected })} ref={node => (this.node = node as HTMLElement)}> | |||||
<tr className={classNames({ selected })} ref={node => (this.node = node)}> | |||||
<td className="thin nowrap"> | <td className="thin nowrap"> | ||||
<span className="spacer-right">{componentAction}</span> | <span className="spacer-right">{componentAction}</span> | ||||
</td> | </td> |
} | } | ||||
export default class Search extends React.PureComponent<Props, State> { | export default class Search extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object.isRequired | router: PropTypes.object.isRequired |
} | } | ||||
export default class ActivationButton extends React.PureComponent<Props, State> { | export default class ActivationButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class ActivationFormModal extends React.PureComponent<Props, State> { | export default class ActivationFormModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
// TODO redirect to default organization's rules page | // TODO redirect to default organization's rules page | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
organizationsEnabled: PropTypes.bool, | organizationsEnabled: PropTypes.bool, |
} | } | ||||
export default class BulkChange extends React.PureComponent<Props, State> { | export default class BulkChange extends React.PureComponent<Props, State> { | ||||
closeDropdown: () => void; | |||||
closeDropdown?: () => void; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
getSelectedProfile = () => { | getSelectedProfile = () => { | ||||
handleActivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleActivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.setState({ action: 'activate', modal: true, profile: undefined }); | this.setState({ action: 'activate', modal: true, profile: undefined }); | ||||
}; | }; | ||||
handleActivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleActivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.setState({ action: 'activate', modal: true, profile: this.getSelectedProfile() }); | this.setState({ action: 'activate', modal: true, profile: this.getSelectedProfile() }); | ||||
}; | }; | ||||
handleDeactivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleDeactivateClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.setState({ action: 'deactivate', modal: true, profile: undefined }); | this.setState({ action: 'deactivate', modal: true, profile: undefined }); | ||||
}; | }; | ||||
handleDeactivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleDeactivateInProfileClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.setState({ action: 'deactivate', modal: true, profile: this.getSelectedProfile() }); | this.setState({ action: 'deactivate', modal: true, profile: this.getSelectedProfile() }); | ||||
}; | }; | ||||
} | } | ||||
export default class BulkChangeModal extends React.PureComponent<Props, State> { | export default class BulkChangeModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class CustomRuleButton extends React.PureComponent<Props, State> { | export default class CustomRuleButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class CustomRuleFormModal extends React.PureComponent<Props, State> { | export default class CustomRuleFormModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class RuleDetails extends React.PureComponent<Props, State> { | export default class RuleDetails extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class RuleDetailsCustomRules extends React.PureComponent<Props, State> { | export default class RuleDetailsCustomRules extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class RuleDetailsDescription extends React.PureComponent<Props, State> { | export default class RuleDetailsDescription extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { | state: State = { | ||||
description: '', | description: '', | ||||
descriptionForm: false, | descriptionForm: false, |
} | } | ||||
export default class RuleDetailsIssues extends React.PureComponent<Props, State> { | export default class RuleDetailsIssues extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class RuleDetailsProfiles extends React.PureComponent<Props, State> { | export default class RuleDetailsProfiles extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
componentDidMount() { | componentDidMount() { | ||||
this.mounted = true; | this.mounted = true; |
const LIST_SIZE = 10; | const LIST_SIZE = 10; | ||||
export default class RuleDetailsTagsPopup extends React.PureComponent<Props, State> { | export default class RuleDetailsTagsPopup extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { searchResult: [] }; | state: State = { searchResult: [] }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class SimilarRulesFilter extends React.PureComponent<Props> { | export default class SimilarRulesFilter extends React.PureComponent<Props> { | ||||
closeDropdown: () => void; | |||||
closeDropdown?: () => void; | |||||
handleLanguageClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleLanguageClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.props.onFilterChange({ languages: [this.props.rule.lang] }); | this.props.onFilterChange({ languages: [this.props.rule.lang] }); | ||||
}; | }; | ||||
handleTypeClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleTypeClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
this.props.onFilterChange({ types: [this.props.rule.type] }); | this.props.onFilterChange({ types: [this.props.rule.type] }); | ||||
}; | }; | ||||
handleSeverityClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleSeverityClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
if (this.props.rule.severity) { | if (this.props.rule.severity) { | ||||
this.props.onFilterChange({ severities: [this.props.rule.severity] }); | this.props.onFilterChange({ severities: [this.props.rule.severity] }); | ||||
} | } | ||||
handleTagClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | handleTagClick = (event: React.SyntheticEvent<HTMLAnchorElement>) => { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
event.currentTarget.blur(); | event.currentTarget.blur(); | ||||
this.closeDropdown(); | |||||
if (this.closeDropdown) { | |||||
this.closeDropdown(); | |||||
} | |||||
const { tag } = event.currentTarget.dataset; | const { tag } = event.currentTarget.dataset; | ||||
if (tag) { | if (tag) { | ||||
this.props.onFilterChange({ tags: [tag] }); | this.props.onFilterChange({ tags: [tag] }); |
const PAGE_SIZE = 50; | const PAGE_SIZE = 50; | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class CreateButton extends React.PureComponent<Props, State> { | export default class CreateButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class EditButton extends React.PureComponent<Props, State> { | export default class EditButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Form extends React.PureComponent<Props, State> { | export default class Form extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
const PAGE_SIZE = 50; | const PAGE_SIZE = 50; | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class CreateButton extends React.PureComponent<Props, State> { | export default class CreateButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class EditButton extends React.PureComponent<Props, State> { | export default class EditButton extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true, query: '' }; | state: State = { loading: true, query: '' }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class EditGroup extends React.PureComponent<Props, State> { | export default class EditGroup extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
export default class EditMembers extends React.PureComponent<Props, State> { | export default class EditMembers extends React.PureComponent<Props, State> { | ||||
container?: HTMLElement | null; | container?: HTMLElement | null; | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { modal: false }; | state: State = { modal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Header extends React.PureComponent<Props, State> { | export default class Header extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { createModal: false }; | state: State = { createModal: false }; | ||||
componentDidMount() { | componentDidMount() { |
export default class AssigneeFacet extends React.PureComponent { | export default class AssigneeFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'assignees'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'assignees'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
if (itemValue === '') { | if (itemValue === '') { | ||||
// unassigned | // unassigned |
export default class AuthorFacet extends React.PureComponent { | export default class AuthorFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'authors'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'authors'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { authors } = this.props; | const { authors } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class CreationDateFacet extends React.PureComponent { | export default class CreationDateFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'createdAt'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
intl: intlShape | intl: intlShape | ||||
}; | }; | ||||
property = 'createdAt'; | |||||
hasValue = () => | hasValue = () => | ||||
this.props.createdAfter.length > 0 || | this.props.createdAfter.length > 0 || | ||||
this.props.createdAt.length > 0 || | this.props.createdAt.length > 0 || |
export default class DirectoryFacet extends React.PureComponent { | export default class DirectoryFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'directories'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'directories'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { directories } = this.props; | const { directories } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class FileFacet extends React.PureComponent { | export default class FileFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'files'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'files'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { files } = this.props; | const { files } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class LanguageFacet extends React.PureComponent { | export default class LanguageFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'languages'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'languages'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { languages } = this.props; | const { languages } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class ModuleFacet extends React.PureComponent { | export default class ModuleFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'modules'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'modules'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { modules } = this.props; | const { modules } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class ProjectFacet extends React.PureComponent { | export default class ProjectFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'projects'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'projects'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { projects } = this.props; | const { projects } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class ResolutionFacet extends React.PureComponent { | export default class ResolutionFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'resolutions'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'resolutions'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
if (itemValue === '') { | if (itemValue === '') { | ||||
// unresolved | // unresolved |
export default class RuleFacet extends React.PureComponent { | export default class RuleFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'rules'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'rules'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { rules } = this.props; | const { rules } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class SeverityFacet extends React.PureComponent { | export default class SeverityFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'severities'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'severities'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { severities } = this.props; | const { severities } = this.props; | ||||
const newValue = orderBy( | const newValue = orderBy( |
export default class StatusFacet extends React.PureComponent { | export default class StatusFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'statuses'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'statuses'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { statuses } = this.props; | const { statuses } = this.props; | ||||
const newValue = orderBy( | const newValue = orderBy( |
export default class TagFacet extends React.PureComponent { | export default class TagFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'tags'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'tags'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { tags } = this.props; | const { tags } = this.props; | ||||
const newValue = sortBy( | const newValue = sortBy( |
export default class TypeFacet extends React.PureComponent { | export default class TypeFacet extends React.PureComponent { | ||||
/*:: props: Props; */ | /*:: props: Props; */ | ||||
property = 'types'; | |||||
static defaultProps = { | static defaultProps = { | ||||
open: true | open: true | ||||
}; | }; | ||||
property = 'types'; | |||||
handleItemClick = (itemValue /*: string */) => { | handleItemClick = (itemValue /*: string */) => { | ||||
const { types } = this.props; | const { types } = this.props; | ||||
const newValue = orderBy( | const newValue = orderBy( |
} | } | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object.isRequired | router: PropTypes.object.isRequired |
} | } | ||||
export default class LicenseEditionForm extends React.PureComponent<Props, State> { | export default class LicenseEditionForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { license: '', submitting: false }; | state: State = { license: '', submitting: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class LicenseEditionSet extends React.PureComponent<Props, State> { | export default class LicenseEditionSet extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class PluginActions extends React.PureComponent<Props, State> { | export default class PluginActions extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { acceptTerms: false, loading: false }; | state: State = { acceptTerms: false, loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class UninstallEditionForm extends React.PureComponent<Props, State> { | export default class UninstallEditionForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class BadgeParams extends React.PureComponent<Props> { | export default class BadgeParams extends React.PureComponent<Props> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { badgeMetrics: [] }; | state: State = { badgeMetrics: [] }; | ||||
} | } | ||||
export class OverviewApp extends React.PureComponent<Props, State> { | export class OverviewApp extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true, measures: [] }; | state: State = { loading: true, measures: [] }; | ||||
componentDidMount() { | componentDidMount() { |
const PAGE_SIZE = 3; | const PAGE_SIZE = 3; | ||||
export default class AnalysesList extends React.PureComponent<Props, State> { | export default class AnalysesList extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { analyses: [], loading: true }; | state: State = { analyses: [], loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class MetaLinks extends React.PureComponent<Props, State> { | export default class MetaLinks extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = {}; | state: State = {}; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
class MetaQualityProfiles extends React.PureComponent<StateProps & OwnProps, State> { | class MetaQualityProfiles extends React.PureComponent<StateProps & OwnProps, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { deprecatedByKey: {} }; | state: State = { deprecatedByKey: {} }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class MetaTags extends React.PureComponent<Props, State> { | export default class MetaTags extends React.PureComponent<Props, State> { | ||||
card: HTMLDivElement | null; | |||||
tagsList: HTMLButtonElement | null; | |||||
tagsSelector: HTMLDivElement | null; | |||||
card?: HTMLDivElement | null; | |||||
tagsList?: HTMLButtonElement | null; | |||||
tagsSelector?: HTMLDivElement | null; | |||||
state: State = { popupOpen: false, popupPosition: { top: 0, right: 0 } }; | state: State = { popupOpen: false, popupPosition: { top: 0, right: 0 } }; | ||||
componentDidMount() { | componentDidMount() { |
}; | }; | ||||
export default class ApplicationQualityGate extends React.PureComponent<Props, State> { | export default class ApplicationQualityGate extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Activity extends React.PureComponent<Props> { | export default class Activity extends React.PureComponent<Props> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export class App extends React.PureComponent<Props, State> { | export class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Report extends React.PureComponent<Props, State> { | export default class Report extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Subscription extends React.PureComponent<Props, State> { | export default class Subscription extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
const BRANCH_LIFETIME_SETTING = 'sonar.dbcleaner.daysBeforeDeletingInactiveShortLivingBranches'; | const BRANCH_LIFETIME_SETTING = 'sonar.dbcleaner.daysBeforeDeletingInactiveShortLivingBranches'; | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class BranchRow extends React.PureComponent<Props, State> { | export default class BranchRow extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { changingLeak: false, deleting: false, renaming: false }; | state: State = { changingLeak: false, deleting: false, renaming: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class DeleteBranchModal extends React.PureComponent<Props, State> { | export default class DeleteBranchModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
const LEAK_PERIOD = 'sonar.leak.period'; | const LEAK_PERIOD = 'sonar.leak.period'; | ||||
export default class LeakPeriodForm extends React.PureComponent<Props, State> { | export default class LeakPeriodForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true, submitting: false }; | state: State = { loading: true, submitting: false }; | ||||
componentDidMount() { | componentDidMount() { |
export const LONG_BRANCH_PATTERN = 'sonar.branch.longLivedBranches.regex'; | export const LONG_BRANCH_PATTERN = 'sonar.branch.longLivedBranches.regex'; | ||||
export default class LongBranchesPattern extends React.PureComponent<Props, State> { | export default class LongBranchesPattern extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { formOpen: false }; | state: State = { formOpen: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class RenameBranchModal extends React.PureComponent<Props, State> { | export default class RenameBranchModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class SettingForm extends React.PureComponent<Props, State> { | export default class SettingForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
import * as React from 'react'; | import * as React from 'react'; | ||||
import { mount, shallow } from 'enzyme'; | import { mount, shallow } from 'enzyme'; | ||||
import App from '../App'; | import App from '../App'; | ||||
import { Branch, BranchType } from '../../../../app/types'; | |||||
import { BranchType, MainBranch, LongLivingBranch, ShortLivingBranch } from '../../../../app/types'; | |||||
const getValues = require('../../../../api/settings').getValues as jest.Mock<any>; | const getValues = require('../../../../api/settings').getValues as jest.Mock<any>; | ||||
}); | }); | ||||
it('renders sorted list of branches', () => { | it('renders sorted list of branches', () => { | ||||
const branches: Branch[] = [ | |||||
const branches: [MainBranch, LongLivingBranch, ShortLivingBranch] = [ | |||||
{ isMain: true, name: 'master' }, | { isMain: true, name: 'master' }, | ||||
{ isMain: false, name: 'branch-1.0', type: BranchType.LONG }, | { isMain: false, name: 'branch-1.0', type: BranchType.LONG }, | ||||
{ isMain: false, name: 'branch-1.0', mergeBranch: 'master', type: BranchType.SHORT } | { isMain: false, name: 'branch-1.0', mergeBranch: 'master', type: BranchType.SHORT } |
} | } | ||||
export default class App extends React.PureComponent<Props> { | export default class App extends React.PureComponent<Props> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Form extends React.PureComponent<Props, State> { | export default class Form extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class QualityProfiles extends React.PureComponent<Props, State> { | export default class QualityProfiles extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: true }; | state: State = { loading: true }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class ProfileRow extends React.PureComponent<Props, State> { | export default class ProfileRow extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class AllProjects extends React.PureComponent<Props, State> { | export default class AllProjects extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object.isRequired | router: PropTypes.object.isRequired |
const LIST_SIZE = 10; | const LIST_SIZE = 10; | ||||
export default class TagsFilter extends React.PureComponent<Props, State> { | export default class TagsFilter extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class App extends React.PureComponent<Props, State> { | export default class App extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class BulkApplyTemplateModal extends React.PureComponent<Props, State> { | export default class BulkApplyTemplateModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { done: false, loading: true, submitting: false }; | state: State = { done: false, loading: true, submitting: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class CreateProjectForm extends React.PureComponent<Props, State> { | export default class CreateProjectForm extends React.PureComponent<Props, State> { | ||||
closeButton: HTMLElement | null; | |||||
mounted: boolean; | |||||
closeButton?: HTMLElement | null; | |||||
mounted = false; | |||||
constructor(props: Props) { | constructor(props: Props) { | ||||
super(props); | super(props); |
} | } | ||||
export default class DeleteModal extends React.PureComponent<Props, State> { | export default class DeleteModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class ProjectRowActions extends React.PureComponent<Props, State> { | export default class ProjectRowActions extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false, restoreAccessModal: false }; | state: State = { loading: false, restoreAccessModal: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class RestoreAccessModal extends React.PureComponent<Props, State> { | export default class RestoreAccessModal extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class Search extends React.PureComponent<Props, State> { | export default class Search extends React.PureComponent<Props, State> { | ||||
input: HTMLInputElement; | |||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { bulkApplyTemplateModal: false, deleteModal: false }; | state: State = { bulkApplyTemplateModal: false, deleteModal: false }; | ||||
getQualifierOptions = () => { | getQualifierOptions = () => { |
} | } | ||||
export default class CopyQualityGateForm extends React.PureComponent<Props, State> { | export default class CopyQualityGateForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object | router: PropTypes.object |
} | } | ||||
export default class CreateQualityGateForm extends React.PureComponent<Props, State> { | export default class CreateQualityGateForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object | router: PropTypes.object |
} | } | ||||
export default class DeleteConditionForm extends React.PureComponent<Props, State> { | export default class DeleteConditionForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
state: State = { loading: false }; | state: State = { loading: false }; | ||||
componentDidMount() { | componentDidMount() { |
} | } | ||||
export default class DeleteQualityGateForm extends React.PureComponent<Props, State> { | export default class DeleteQualityGateForm extends React.PureComponent<Props, State> { | ||||
mounted: boolean; | |||||
mounted = false; | |||||
static contextTypes = { | static contextTypes = { | ||||
router: PropTypes.object | router: PropTypes.object |