Browse Source

SONAR-13155 Upgrade dependencies

tags/8.3.0.34182
Jeremy 4 years ago
parent
commit
0c8d18b4ed

+ 33
- 33
server/sonar-docs/package.json View File

@@ -6,57 +6,57 @@
"dependencies": {
"@andrew-codes/gatsby-plugin-elasticlunr-search": "1.0.4",
"classnames": "2.2.6",
"gatsby": "2.2.8",
"gatsby-plugin-layout": "1.0.13",
"gatsby": "2.19.49",
"gatsby-plugin-layout": "1.1.24",
"gatsby-plugin-polyfill-io": "1.1.0",
"gatsby-plugin-react-helmet": "3.0.10",
"gatsby-plugin-typescript": "2.0.11",
"gatsby-plugin-typography": "2.2.10",
"gatsby-remark-custom-blocks": "2.0.7",
"gatsby-source-filesystem": "2.0.28",
"gatsby-transformer-remark": "2.3.8",
"gatsby-plugin-react-helmet": "3.1.24",
"gatsby-plugin-typescript": "2.2.5",
"gatsby-plugin-typography": "2.3.25",
"gatsby-remark-custom-blocks": "2.1.27",
"gatsby-source-filesystem": "2.1.57",
"gatsby-transformer-remark": "2.6.59",
"lodash": "4.17.15",
"lunr": "2.3.6",
"react": "16.8.6",
"react-dom": "16.8.6",
"react-helmet": "5.2.0",
"lunr": "2.3.8",
"react": "16.13.0",
"react-dom": "16.13.0",
"react-helmet": "5.2.1",
"react-typography": "0.16.19",
"sonar-ui-common": "0.0.52",
"sonar-ui-common": "0.0.55",
"typography": "0.16.19"
},
"devDependencies": {
"@types/classnames": "2.2.7",
"@types/enzyme": "3.10.1",
"@types/jest": "24.0.15",
"@types/lodash": "4.14.138",
"@types/enzyme": "3.10.5",
"@types/jest": "25.1.4",
"@types/lodash": "4.14.149",
"@types/lunr": "2.3.2",
"@types/react": "16.8.23",
"@types/react-dom": "16.8.4",
"@types/react-helmet": "5.0.8",
"@types/react-helmet": "5.0.15",
"@typescript-eslint/parser": "2.6.0",
"babel-jest": "24.8.0",
"enzyme": "3.10.0",
"enzyme-adapter-react-16": "1.14.0",
"enzyme-to-json": "3.3.5",
"eslint": "5.16.0",
"babel-jest": "25.1.0",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.2",
"enzyme-to-json": "3.4.4",
"eslint": "6.8.0",
"eslint-config-sonarqube": "0.5.1",
"eslint-plugin-import": "2.18.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-promise": "4.1.1",
"eslint-plugin-react": "7.14.2",
"eslint-plugin-react-hooks": "1.6.1",
"eslint-plugin-sonarjs": "0.4.0",
"eslint-plugin-import": "2.20.1",
"eslint-plugin-jsx-a11y": "6.2.3",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-react": "7.19.0",
"eslint-plugin-react-hooks": "2.5.0",
"eslint-plugin-sonarjs": "0.5.0",
"fs-extra": "7.0.1",
"glob-promise": "3.4.0",
"graphql-code-generator": "0.5.2",
"jest": "24.8.0",
"jest": "25.1.0",
"jest-fetch-mock": "2.1.2",
"prettier": "1.19.1",
"react-test-renderer": "16.8.5",
"remark": "10.0.1",
"ts-jest": "24.0.2",
"typescript": "3.7.4",
"unist-util-visit": "1.4.0"
"remark": "11.0.2",
"ts-jest": "25.2.1",
"typescript": "3.8.3",
"unist-util-visit": "2.0.2"
},
"scripts": {
"build": "gatsby clean && gatsby build --prefix-paths",

+ 5074
- 3189
server/sonar-docs/yarn.lock
File diff suppressed because it is too large
View File


+ 3
- 1
server/sonar-web/.eslintrc View File

@@ -1,6 +1,8 @@
{
"extends": "sonarqube",
"rules": {
"camelcase": "off"
"camelcase": "off",
"promise/no-return-wrap": "warn",
"react/jsx-curly-brace-presence": "warn"
}
}

+ 3
- 2
server/sonar-web/config/webpack.config.js View File

@@ -76,7 +76,8 @@ module.exports = ({ production = true, release = false }) => {
optimization: {
splitChunks: {
chunks: 'all',
automaticNameDelimiter: '-'
automaticNameDelimiter: '-',
maxSize: 310000
},
minimize: production && release
}
@@ -204,7 +205,7 @@ module.exports = ({ production = true, release = false }) => {
? {
// ignore source maps and documentation chunk
assetFilter: assetFilename =>
!assetFilename.endsWith('.map') && !assetFilename.startsWith('js/docs.'),
!assetFilename.endsWith('.map') && !assetFilename.startsWith('js/docs'),
maxAssetSize: 310000,
hints: 'error'
}

+ 77
- 80
server/sonar-web/package.json View File

@@ -5,123 +5,120 @@
"repository": "SonarSource/sonarqube",
"license": "LGPL-3.0",
"dependencies": {
"@emotion/core": "10.0.17",
"@emotion/styled": "10.0.17",
"@emotion/core": "10.0.28",
"@emotion/styled": "10.0.27",
"classnames": "2.2.6",
"core-js": "3.0.0",
"core-js": "3.6.4",
"create-react-class": "15.6.3",
"d3-array": "1.2.4",
"d3-scale": "2.1.2",
"d3-scale": "3.2.1",
"date-fns": "1.30.1",
"dompurify": "2.0.3",
"emotion-theming": "10.0.19",
"dompurify": "2.0.8",
"emotion-theming": "10.0.27",
"history": "3.3.0",
"intl-relativeformat": "2.1.0",
"keymaster": "1.6.2",
"lodash": "4.17.15",
"lunr": "2.3.4",
"mdast-util-toc": "2.1.0",
"lunr": "2.3.8",
"mdast-util-toc": "5.0.2",
"prop-types": "15.7.2",
"react": "16.8.6",
"react-countup": "4.1.1",
"react": "16.13.0",
"react-countup": "4.3.3",
"react-day-picker": "7.3.0",
"react-dom": "16.8.6",
"react-draggable": "3.2.1",
"react-dom": "16.13.0",
"react-draggable": "4.2.0",
"react-helmet-async": "1.0.4",
"react-intl": "2.8.0",
"react-redux": "5.1.1",
"react-router": "3.2.1",
"react-virtualized": "9.21.0",
"redux": "4.0.1",
"react-router": "3.2.6",
"react-virtualized": "9.21.2",
"redux": "4.0.5",
"redux-logger": "3.0.6",
"redux-thunk": "2.3.0",
"regenerator-runtime": "0.13.2",
"remark-custom-blocks": "2.3.0",
"remark-slug": "5.1.0",
"sonar-ui-common": "0.0.52",
"unist-util-visit": "1.4.0",
"regenerator-runtime": "0.13.5",
"remark-custom-blocks": "2.5.0",
"remark-slug": "5.1.2",
"sonar-ui-common": "0.0.55",
"unist-util-visit": "2.0.2",
"valid-url": "1.0.9",
"whatwg-fetch": "2.0.4"
"whatwg-fetch": "3.0.0"
},
"devDependencies": {
"@babel/core": "7.4.0",
"@babel/plugin-proposal-class-properties": "7.4.0",
"@babel/plugin-proposal-object-rest-spread": "7.4.0",
"@babel/plugin-syntax-dynamic-import": "7.2.0",
"@babel/plugin-transform-react-constant-elements": "7.2.0",
"@babel/plugin-transform-react-jsx-self": "7.2.0",
"@babel/plugin-transform-react-jsx-source": "7.2.0",
"@babel/preset-env": "7.4.2",
"@babel/preset-react": "7.0.0",
"@types/classnames": "2.2.6",
"@types/d3-array": "1.2.4",
"@types/d3-scale": "2.0.2",
"@types/d3-selection": "1.3.2",
"@types/d3-zoom": "1.7.2",
"@types/dompurify": "0.0.32",
"@types/enzyme": "3.10.1",
"@types/jest": "24.0.15",
"@babel/core": "7.8.7",
"@babel/plugin-proposal-class-properties": "7.8.3",
"@babel/plugin-proposal-object-rest-spread": "7.8.3",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/plugin-transform-react-constant-elements": "7.8.3",
"@babel/plugin-transform-react-jsx-self": "7.8.3",
"@babel/plugin-transform-react-jsx-source": "7.8.3",
"@babel/preset-env": "7.8.7",
"@babel/preset-react": "7.8.3",
"@types/classnames": "2.2.10",
"@types/d3-scale": "2.2.0",
"@types/d3-selection": "1.4.1",
"@types/d3-zoom": "1.7.4",
"@types/dompurify": "2.0.1",
"@types/enzyme": "3.10.5",
"@types/jest": "25.1.4",
"@types/keymaster": "1.6.28",
"@types/lodash": "4.14.138",
"@types/prop-types": "15.7.0",
"@types/lodash": "4.14.149",
"@types/prop-types": "15.7.3",
"@types/react": "16.8.23",
"@types/react-dom": "16.8.4",
"@types/react-helmet": "5.0.14",
"@types/react-helmet": "5.0.15",
"@types/react-intl": "2.3.17",
"@types/react-redux": "6.0.6",
"@types/react-router": "3.0.20",
"@types/react-virtualized": "9.21.0",
"@types/sanitize-html": "1.20.0",
"@types/react-virtualized": "9.21.8",
"@types/sanitize-html": "1.22.0",
"@types/valid-url": "1.0.2",
"@typescript-eslint/parser": "2.6.0",
"autoprefixer": "9.5.0",
"@typescript-eslint/parser": "2.24.0",
"autoprefixer": "9.7.4",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "24.8.0",
"babel-loader": "8.0.5",
"babel-plugin-dynamic-import-node": "2.2.0",
"babel-jest": "25.1.0",
"babel-loader": "8.0.6",
"babel-plugin-dynamic-import-node": "2.3.0",
"babel-plugin-lodash": "3.3.4",
"chalk": "2.4.1",
"chalk": "3.0.0",
"clean-webpack-plugin": "2.0.1",
"copy-webpack-plugin": "5.0.1",
"css-loader": "2.1.1",
"copy-webpack-plugin": "5.1.1",
"css-loader": "3.4.2",
"cssnano": "4.1.10",
"enzyme": "3.10.0",
"enzyme-adapter-react-16": "1.14.0",
"enzyme-to-json": "3.3.5",
"escape-string-regexp": "1.0.5",
"eslint": "5.16.0",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.2",
"enzyme-to-json": "3.4.4",
"escape-string-regexp": "2.0.0",
"eslint": "6.8.0",
"eslint-config-sonarqube": "0.5.1",
"eslint-plugin-import": "2.18.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-promise": "4.1.1",
"eslint-plugin-react": "7.14.2",
"eslint-plugin-react-hooks": "1.6.1",
"eslint-plugin-sonarjs": "0.4.0",
"eslint-plugin-import": "2.20.1",
"eslint-plugin-jsx-a11y": "6.2.3",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-react": "7.19.0",
"eslint-plugin-react-hooks": "2.5.0",
"eslint-plugin-sonarjs": "0.5.0",
"expose-loader": "0.7.5",
"glob": "7.1.3",
"glob": "7.1.6",
"glob-promise": "3.4.0",
"html-webpack-plugin": "3.2.0",
"jest": "24.8.0",
"jest": "25.1.0",
"lint-staged": "7.3.0",
"lodash-webpack-plugin": "0.11.5",
"mini-css-extract-plugin": "0.6.0",
"postcss-calc": "7.0.1",
"postcss-custom-properties": "8.0.10",
"mini-css-extract-plugin": "0.9.0",
"postcss-calc": "7.0.2",
"postcss-custom-properties": "9.1.1",
"postcss-loader": "3.0.0",
"prettier": "1.19.1",
"raw-loader": "2.0.0",
"raw-loader": "3.1.0",
"react-dev-utils": "5.0.1",
"react-error-overlay": "1.0.7",
"react-test-renderer": "16.8.6",
"remark": "9.0.0",
"remark-react": "4.0.3",
"style-loader": "0.23.1",
"ts-jest": "24.0.2",
"ts-loader": "5.3.3",
"typescript": "3.7.4",
"webpack": "4.29.6",
"webpack-bundle-analyzer": "3.3.2",
"webpack-dev-server": "3.2.1"
"react-test-renderer": "16.13.0",
"remark": "11.0.2",
"remark-react": "6",
"style-loader": "1.1.3",
"ts-jest": "25.2.1",
"ts-loader": "6.2.1",
"typescript": "3.8.3",
"webpack": "4.42.0",
"webpack-bundle-analyzer": "3.6.1",
"webpack-dev-server": "3.10.3"
},
"scripts": {
"start": "node scripts/start.js",

+ 4
- 4
server/sonar-web/src/main/js/apps/quality-profiles/components/ExtendProfileForm.tsx View File

@@ -59,7 +59,8 @@ export default class ExtendProfileForm extends React.PureComponent<Props, State>
this.setState({ name: event.currentTarget.value });
};

handleFormSubmit = async () => {
handleFormSubmit = async (event: React.SyntheticEvent<HTMLFormElement>) => {
event.preventDefault();
if (this.canSubmit(this.state)) {
const { organization, profile: parentProfile } = this.props;
const { name } = this.state;
@@ -97,7 +98,7 @@ export default class ExtendProfileForm extends React.PureComponent<Props, State>

return (
<Modal contentLabel={header} onRequestClose={this.props.onClose} size="small">
<form>
<form onSubmit={this.handleFormSubmit}>
<div className="modal-head">
<h2>{header}</h2>
</div>
@@ -124,8 +125,7 @@ export default class ExtendProfileForm extends React.PureComponent<Props, State>
<DeferredSpinner className="spacer-right" loading={this.state.loading} />
<SubmitButton
disabled={this.state.loading || !this.canSubmit(this.state)}
id="extend-profile-submit"
onClick={this.handleFormSubmit}>
id="extend-profile-submit">
{translate('extend')}
</SubmitButton>
<ResetButtonLink id="extend-profile-cancel" onClick={this.props.onClose}>

+ 4
- 6
server/sonar-web/src/main/js/apps/quality-profiles/components/__tests__/ExtendProfileForm-test.tsx View File

@@ -19,7 +19,7 @@
*/
import { shallow } from 'enzyme';
import * as React from 'react';
import { click, waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
import { mockEvent, waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
import { changeProfileParent, createQualityProfile } from '../../../../api/quality-profiles';
import { mockQualityProfile } from '../../../../helpers/testMocks';
import ExtendProfileForm from '../ExtendProfileForm';
@@ -40,12 +40,10 @@ it('should correctly create a new profile and extend the existing one', async ()
const name = 'New name';
const wrapper = shallowRender({ organization, profile });

click(wrapper.find('SubmitButton'));
expect(createQualityProfile).not.toHaveBeenCalled();
expect(changeProfileParent).not.toHaveBeenCalled();
expect(wrapper.find('SubmitButton').props().disabled).toBe(true);

wrapper.setState({ name }).update();
click(wrapper.find('SubmitButton'));
wrapper.instance().handleFormSubmit(mockEvent());
await waitAndUpdate(wrapper);

const data = new FormData();
@@ -57,7 +55,7 @@ it('should correctly create a new profile and extend the existing one', async ()
});

function shallowRender(props: Partial<ExtendProfileForm['props']> = {}) {
return shallow(
return shallow<ExtendProfileForm>(
<ExtendProfileForm
onClose={jest.fn()}
onExtend={jest.fn()}

+ 3
- 2
server/sonar-web/src/main/js/apps/quality-profiles/components/__tests__/__snapshots__/ExtendProfileForm-test.tsx.snap View File

@@ -6,7 +6,9 @@ exports[`should render correctly 1`] = `
onRequestClose={[MockFunction]}
size="small"
>
<form>
<form
onSubmit={[Function]}
>
<div
className="modal-head"
>
@@ -54,7 +56,6 @@ exports[`should render correctly 1`] = `
<SubmitButton
disabled={true}
id="extend-profile-submit"
onClick={[Function]}
>
extend
</SubmitButton>

+ 24
- 2
server/sonar-web/src/main/js/apps/sessions/components/__tests__/Logout-test.tsx View File

@@ -22,9 +22,32 @@ import * as React from 'react';
import { waitAndUpdate } from 'sonar-ui-common/helpers/testUtils';
import { Logout } from '../Logout';

const originalLocation = window.location;

beforeAll(() => {
const location = {
...window.location,
replace: jest.fn()
};
Object.defineProperty(window, 'location', {
writable: true,
value: location
});
});

beforeEach(() => {
jest.clearAllMocks();
});

afterAll(() => {
Object.defineProperty(window, 'location', {
writable: true,
value: originalLocation
});
});

it('should logout correctly', async () => {
const doLogout = jest.fn().mockResolvedValue(true);
window.location.replace = jest.fn();

const wrapper = shallowRender({ doLogout });
await waitAndUpdate(wrapper);
@@ -35,7 +58,6 @@ it('should logout correctly', async () => {

it('should not redirect if logout fails', async () => {
const doLogout = jest.fn().mockRejectedValue(false);
window.location.replace = jest.fn();

const wrapper = shallowRender({ doLogout });
await waitAndUpdate(wrapper);

+ 1
- 1
server/sonar-web/src/main/js/apps/settings/__tests__/utils-test.ts View File

@@ -175,7 +175,7 @@ describe('sanitizeTranslation', () => {
<span title=malformed attribs' do=don't id=foo checked onclick="a<b">Bar</span>`);

expect(clean.replace(/\s+/g, '')).toBe(
`Clickyalert("&lt;b&gt;hi&lt;/b&gt;");&lt;divid=notarealtagonclick=notcode()&gt;&lt;notatag&lt;&lt;&lt;allinonetextblock&gt;&gt;&gt;Makesurethat&lt;%#somephpcodeherewrite("$horriblySyntacticConstruct1");%&gt;*/alert('hi');*/alert('hi');--&gt;*/alert('hi');--&gt;'}--&gt;--&gt;&lt;!--Zoicks--&gt;sectioninHTML]]&gt;Bar`
`Clickyalert("&lt;b&gt;hi&lt;/b&gt;");&lt;divid=notarealtagonclick=notcode()&gt;&lt;notatag&lt;&lt;&lt;allinonetextblock&gt;&gt;&gt;&lt;%#somephpcodeherewrite("$horriblySyntacticConstruct1");%&gt;*/alert('hi');*/alert('hi');--&gt;*/alert('hi');--&gt;'}--&gt;--&gt;&lt;!--Zoicks--&gt;sectioninHTML]]&gt;Bar`
);
});
});

+ 8
- 1
server/sonar-web/src/main/js/components/common/__tests__/MultiSelect-test.tsx View File

@@ -51,6 +51,13 @@ it('should render multiselect with selected elements', () => {
});

it('should render with the focus inside the search input', () => {
const multiselect = mount(<MultiSelect {...props} />);
/*
* Need to attach to document body to have it set to `document.activeElement`
* See: https://github.com/jsdom/jsdom/issues/2723#issuecomment-580163361
*/
const multiselect = mount(<MultiSelect {...props} />, { attachTo: document.body });

expect(multiselect.find('input').getDOMNode()).toBe(document.activeElement);

multiselect.unmount();
});

+ 2
- 2
server/sonar-web/src/main/js/components/docs/DocLink.tsx View File

@@ -45,7 +45,7 @@ export class DocLink extends React.PureComponent<Props> {
};

render() {
const { children, href, customProps, ...other } = this.props;
const { appState, children, href, customProps, ...other } = this.props;
if (href && href.startsWith('#')) {
return (
<a href="#" onClick={this.handleClickOnAnchor}>
@@ -61,7 +61,7 @@ export class DocLink extends React.PureComponent<Props> {
return <SonarQubeLink url={href}>{children}</SonarQubeLink>;
} else if (href.startsWith(SONARQUBE_ADMIN_LINK)) {
return (
<SonarQubeAdminLink canAdmin={this.props.appState.canAdmin} url={href}>
<SonarQubeAdminLink canAdmin={appState.canAdmin} url={href}>
{children}
</SonarQubeAdminLink>
);

+ 19
- 19
server/sonar-web/src/main/js/components/docs/DocToc.tsx View File

@@ -48,6 +48,25 @@ export default class DocToc extends React.PureComponent<Props, State> {

state: State = { anchors: [] };

constructor(props: Props) {
super(props);
this.debouncedScrollHandler = debounce(this.scrollHandler);
}

static getDerivedStateFromProps(props: Props) {
const { content } = props;
return { anchors: DocToc.getAnchors(content) };
}

componentDidMount() {
window.addEventListener('scroll', this.debouncedScrollHandler, true);
this.scrollHandler();
}

componentWillUnmount() {
window.removeEventListener('scroll', this.debouncedScrollHandler, true);
}

static getAnchors = memoize((content: string) => {
const file: { contents: JSX.Element } = remark()
.use(reactRenderer)
@@ -81,25 +100,6 @@ export default class DocToc extends React.PureComponent<Props, State> {
return [];
});

static getDerivedStateFromProps(props: Props) {
const { content } = props;
return { anchors: DocToc.getAnchors(content) };
}

constructor(props: Props) {
super(props);
this.debouncedScrollHandler = debounce(this.scrollHandler);
}

componentDidMount() {
window.addEventListener('scroll', this.debouncedScrollHandler, true);
this.scrollHandler();
}

componentWillUnmount() {
window.removeEventListener('scroll', this.debouncedScrollHandler, true);
}

scrollHandler = () => {
// eslint-disable-next-line react/no-find-dom-node
const node = findDOMNode(this) as HTMLElement;

+ 0
- 10
server/sonar-web/src/main/js/components/docs/__tests__/__snapshots__/DocLink-test.tsx.snap View File

@@ -26,11 +26,6 @@ exports[`should not render sonarqube link on sonarcloud 1`] = `

exports[`should render documentation link 1`] = `
<Link
appState={
Object {
"canAdmin": false,
}
}
onlyActiveOnIndex={false}
style={Object {}}
to="/documentation/foo/bar"
@@ -42,11 +37,6 @@ exports[`should render documentation link 1`] = `
exports[`should render simple link 1`] = `
<Fragment>
<a
appState={
Object {
"canAdmin": false,
}
}
href="http://sample.com"
rel="noopener noreferrer"
target="_blank"

+ 9
- 13
server/sonar-web/src/main/js/components/docs/__tests__/__snapshots__/DocMarkdownBlock-test.tsx.snap View File

@@ -110,21 +110,17 @@ exports[`should render simple markdown 1`] = `
<div
className="markdown-content"
>
<Block
<p
key="h-1"
>
<p
this is
<em
key="h-2"
>
this is
<em
key="h-3"
>
bold
</em>
text
</p>
</Block>
bold
</em>
text
</p>
</div>
</div>
`;
@@ -132,7 +128,7 @@ exports[`should render simple markdown 1`] = `
exports[`should render with custom props for links 1`] = `
<withChildProps
href="#quality-profiles"
key="h-3"
key="h-2"
>
link
</withChildProps>
@@ -141,7 +137,7 @@ exports[`should render with custom props for links 1`] = `
exports[`should use custom component for links 1`] = `
<withChildProps
href="/quality-profiles"
key="h-3"
key="h-2"
>
link
</withChildProps>

+ 1
- 0
server/sonar-web/src/main/js/components/workspace/__tests__/__snapshots__/WorkspaceHeader-test.tsx.snap View File

@@ -23,6 +23,7 @@ exports[`should render 1`] = `
onMouseDown={[Function]}
onStart={[Function]}
onStop={[Function]}
scale={1}
transform={null}
>
<div

+ 3373
- 2235
server/sonar-web/yarn.lock
File diff suppressed because it is too large
View File


Loading…
Cancel
Save