diff --git a/CHANGELOG.md b/CHANGELOG.md index 5483f808..819aa1f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,48 @@ + +# [2.0.0-alpha.38](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.37...v2.0.0-alpha.38) (2018-08-24) + + +### Bug Fixes + +* addd indent to array schema internals ([865f3ce](https://github.com/Rebilly/ReDoc/commit/865f3ce)) +* fix oneOf/anyOf titles ([39b930d](https://github.com/Rebilly/ReDoc/commit/39b930d)), closes [#618](https://github.com/Rebilly/ReDoc/issues/618) [#621](https://github.com/Rebilly/ReDoc/issues/621) + + + + +# [2.0.0-alpha.37](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.36...v2.0.0-alpha.37) (2018-08-22) + + +### Bug Fixes + +* do not inherit title in allOf ([720e282](https://github.com/Rebilly/ReDoc/commit/720e282)), closes [#601](https://github.com/Rebilly/ReDoc/issues/601) +* fix crash on empty media object ([fb21212](https://github.com/Rebilly/ReDoc/commit/fb21212)), closes [#608](https://github.com/Rebilly/ReDoc/issues/608) +* make http badges font-based instead of inline png ([5d84bd4](https://github.com/Rebilly/ReDoc/commit/5d84bd4)) +* use correct parent section for security definition ([f903406](https://github.com/Rebilly/ReDoc/commit/f903406)) + + + + +# [2.0.0-alpha.36](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.35...v2.0.0-alpha.36) (2018-08-11) + + +### Bug Fixes + +* broken rendering of code blocks with language in markdown ([8218a26](https://github.com/Rebilly/ReDoc/commit/8218a26)) +* broken rendering of headings with regexp characters ([e660517](https://github.com/Rebilly/ReDoc/commit/e660517)) + + + + +# [2.0.0-alpha.35](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.34...v2.0.0-alpha.35) (2018-08-09) + + +### Bug Fixes + +* crash on any backticks code block without lang specified ([58ae668](https://github.com/Rebilly/ReDoc/commit/58ae668)) +* fix auth requirements font size ([d13fe13](https://github.com/Rebilly/ReDoc/commit/d13fe13)) + + # [2.0.0-alpha.34](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.33...v2.0.0-alpha.34) (2018-08-08) diff --git a/cli/README.md b/cli/README.md index 6448730e..7b836f47 100644 --- a/cli/README.md +++ b/cli/README.md @@ -14,7 +14,7 @@ Two following commands are available: Some examples: -- Bundle with main color changed to `orange`:
`$ redoc-cli bundle [spec] --options.theme.colors.main=orange` +- Bundle with main color changed to `orange`:
`$ redoc-cli bundle [spec] --options.theme.colors.primary.main=orange` - Serve with `nativeScrollbars` option set to true:
`$ redoc-cli serve [spec] --options.nativeScrollbars` - Bundle using custom template (check [default template](https://github.com/Rebilly/ReDoc/blob/master/cli/template.hbs) for reference):
`$ redoc-cli bundle [spec] -t custom.hbs` diff --git a/cli/package.json b/cli/package.json index 4c8de9fe..2b51d418 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "redoc-cli", - "version": "0.6.1", + "version": "0.6.2", "description": "ReDoc's Command Line Interface", "main": "index.js", "bin": "index.js", @@ -12,11 +12,11 @@ "isarray": "^2.0.4", "mkdirp": "^0.5.1", "mobx": "^4.2.0", - "react": "^16.3.2", - "react-dom": "^16.3.2", - "redoc": "^2.0.0-alpha.29", - "tslib": "^1.9.0", - "yargs": "^11.0.0" + "react": "^16.4.2", + "react-dom": "^16.4.2", + "redoc": "^2.0.0-alpha.37", + "tslib": "^1.9.3", + "yargs": "^12.0.1" }, "scripts": { "ci-publish": "ci-publish" @@ -25,7 +25,7 @@ "access": "public" }, "devDependencies": { - "@types/handlebars": "^4.0.36", + "@types/handlebars": "^4.0.39", "@types/mkdirp": "^0.5.2", "ci-publish": "^1.3.1" } diff --git a/demo/webpack.config.ts b/demo/webpack.config.ts index f11cd67a..edd661b0 100644 --- a/demo/webpack.config.ts +++ b/demo/webpack.config.ts @@ -29,8 +29,11 @@ const tsLoader = env => ({ const babelLoader = mode => ({ loader: 'babel-loader', options: { + generatorOpts: { + decoratorsBeforeExport: true, + }, plugins: compact([ - '@babel/plugin-syntax-typescript', + ['@babel/plugin-syntax-typescript', { isTSX: true }], ['@babel/plugin-syntax-decorators', { legacy: true }], '@babel/plugin-syntax-jsx', mode !== 'production' ? 'react-hot-loader/babel' : undefined, @@ -113,6 +116,7 @@ export default (env: { playground?: boolean; bench?: boolean } = {}, { mode }) = instance: 'ts2js-transpiler-only', compilerOptions: { allowJs: true, + declaration: false, }, }, }, diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index 28602821..5111de10 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -12,13 +12,14 @@ describe('Menu', () => { it('should sync active menu items while scroll', () => { cy.contains('h1', 'Introduction') .scrollIntoView() - .get('[role=menuitem].active:not(.-depth0)') + .get('[role=menuitem].active') .should('have.text', 'Introduction'); cy.contains('h2', 'Add a new pet to the store') .scrollIntoView() - .get('[role=menuitem].active:not(.-depth0)') - .should('have.length', 2) + .wait(100) + .get('[role=menuitem].active') + .children() .last() .should('have.text', 'Add a new pet to the store') .should('be.visible'); diff --git a/package.json b/package.json index b111e0db..fe7083ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redoc", - "version": "2.0.0-alpha.34", + "version": "2.0.0-alpha.38", "description": "ReDoc", "repository": { "type": "git", @@ -51,71 +51,71 @@ "license-check": "license-checker --production --onlyAllow 'MIT;ISC;Apache-2.0;BSD;BSD-2-Clause;BSD-3-Clause' --summary" }, "devDependencies": { - "@babel/core": "7.0.0-beta.47", - "@babel/plugin-syntax-decorators": "7.0.0-beta.47", - "@babel/plugin-syntax-jsx": "7.0.0-beta.47", - "@babel/plugin-syntax-typescript": "7.0.0-beta.47", + "@babel/core": "7.0.0-rc.2", + "@babel/plugin-syntax-decorators": "7.0.0-rc.2", + "@babel/plugin-syntax-jsx": "7.0.0-rc.2", + "@babel/plugin-syntax-typescript": "7.0.0-rc.2", "@cypress/webpack-preprocessor": "2.0.1", "@types/chai": "4.1.4", "@types/dompurify": "^0.0.31", - "@types/enzyme": "^3.1.11", - "@types/enzyme-to-json": "^1.5.0", - "@types/jest": "^23.1.6", + "@types/enzyme": "^3.1.13", + "@types/enzyme-to-json": "^1.5.2", + "@types/jest": "^23.3.1", "@types/json-pointer": "^1.0.30", - "@types/lodash": "^4.14.112", - "@types/lunr": "^2.1.5", + "@types/lodash": "^4.14.116", + "@types/lunr": "^2.1.6", "@types/mark.js": "^8.11.1", - "@types/marked": "^0.4.0", + "@types/marked": "^0.4.1", "@types/prismjs": "^1.6.4", - "@types/prop-types": "^15.5.3", - "@types/react": "^16.4.6", - "@types/react-dom": "^16.0.6", + "@types/prop-types": "^15.5.5", + "@types/react": "^16.4.11", + "@types/react-dom": "^16.0.7", "@types/react-hot-loader": "^4.1.0", - "@types/react-tabs": "^1.0.2", + "@types/react-tabs": "^1.0.5", "@types/tapable": "1.0.4", - "@types/webpack": "^4.4.6", + "@types/webpack": "^4.4.11", "@types/webpack-env": "^1.13.0", - "@types/yargs": "^11.1.0", + "@types/yargs": "^11.1.1", "babel-loader": "8.0.0-beta.2", "babel-plugin-styled-components": "^1.5.1", "beautify-benchmark": "^0.2.4", "bundlesize": "^0.17.0", - "conventional-changelog-cli": "^2.0.1", + "conventional-changelog-cli": "^2.0.5", "copy-webpack-plugin": "^4.5.2", "core-js": "^2.5.7", "coveralls": "^3.0.2", "css-loader": "^1.0.0", - "cypress": "~3.0.2", + "cypress": "~3.1.0", "deploy-to-gh-pages": "^1.3.6", - "enzyme": "^3.1.1", - "enzyme-adapter-react-16": "^1.0.4", + "enzyme": "^3.4.4", + "enzyme-adapter-react-16": "^1.2.0", "enzyme-to-json": "^3.3.4", - "fork-ts-checker-webpack-plugin": "^0.4.3", + "fork-ts-checker-webpack-plugin": "0.4.3", "html-webpack-plugin": "^3.1.0", - "jest": "^23.4.1", - "license-checker": "^20.1.0", + "jest": "^23.5.0", + "license-checker": "^20.2.0", "lodash": "^4.17.10", "mobx": "^4.3.1", - "prettier": "^1.13.7", + "prettier": "^1.14.2", "prettier-eslint": "^8.8.2", - "puppeteer": "^1.6.0", + "puppeteer": "^1.7.0", "raf": "^3.4.0", - "react": "^16.4.1", - "react-dom": "^16.4.1", + "react": "^16.4.2", + "react-dom": "^16.4.2", "rimraf": "^2.6.2", "shelljs": "^0.8.1", - "source-map-loader": "^0.2.1", - "style-loader": "^0.21.0", + "source-map-loader": "^0.2.4", + "style-loader": "^0.22.1", "swagger2openapi": "^3.2.8", - "ts-jest": "^23.0.0", - "ts-loader": "4.4.2", - "ts-node": "^7.0.0", - "tslint": "^5.7.0", + "ts-jest": "23.0.1", + "ts-loader": "4.5.0", + "ts-node": "^7.0.1", + "tslint": "^5.11.0", "tslint-react": "^3.4.0", - "typescript": "^3.0.0-dev.20180712", - "webpack": "^4.16.1", - "webpack-cli": "^3.0.8", - "webpack-dev-server": "^3.1.1", + "typescript": "^3.0.1", + "webpack": "^4.17.1", + "webpack-cli": "^3.1.0", + "webpack-dev-server": "^3.1.5", "webpack-node-externals": "^1.6.0", "workerize-loader": "^1.0.3", "yaml-js": "^0.2.3" @@ -128,26 +128,26 @@ "dependencies": { "classnames": "^2.2.6", "decko": "^1.2.0", - "dompurify": "^1.0.6", + "dompurify": "^1.0.7", "eventemitter3": "^3.0.0", "json-pointer": "^0.6.0", - "json-schema-ref-parser": "^5.1.1", - "lunr": "^2.3.0", + "json-schema-ref-parser": "^5.1.2", + "lunr": "^2.3.2", "mark.js": "^8.11.1", "marked": "0.3.18", "memoize-one": "^4.0.0", - "mobx-react": "^5.2.3", - "openapi-sampler": "1.0.0-beta.13", + "mobx-react": "^5.2.5", + "openapi-sampler": "1.0.0-beta.14", "perfect-scrollbar": "^1.4.0", - "polished": "^1.9.3", + "polished": "^2.0.2", "prismjs": "^1.15.0", "prop-types": "^15.6.2", - "react-dropdown": "^1.3.0", - "react-hot-loader": "^4.3.3", + "react-dropdown": "^1.6.2", + "react-hot-loader": "^4.3.5", "react-tabs": "^2.0.0", - "slugify": "^1.2.1", + "slugify": "^1.3.1", "stickyfill": "^1.1.1", - "styled-components": "^3.3.3", + "styled-components": "^3.4.5", "tslib": "^1.9.3" }, "resolutions": { @@ -162,7 +162,7 @@ ], "jest": { "transform": { - "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" + "^.+\\.tsx?$": "ts-jest" }, "setupTestFrameworkScriptFile": "/src/setupTests.ts", "testPathIgnorePatterns": [ diff --git a/src/common-elements/PrismDiv.tsx b/src/common-elements/PrismDiv.tsx index 8961332a..c1cb6928 100644 --- a/src/common-elements/PrismDiv.tsx +++ b/src/common-elements/PrismDiv.tsx @@ -7,8 +7,8 @@ export const PrismDiv = styled.div` code[class*='language-'], pre[class*='language-'] { - color: white; - background: none; + /* color: white; + background: none; */ text-shadow: 0 -0.1em 0.2em black; text-align: left; white-space: pre; diff --git a/src/common-elements/dropdown.ts b/src/common-elements/dropdown.ts index 69521f6f..fe6cbe0b 100644 --- a/src/common-elements/dropdown.ts +++ b/src/common-elements/dropdown.ts @@ -93,7 +93,7 @@ export const StyledDropdown = withProps(styled(Dropdown))` } ` as StyledComponentClass; -export const SimpleDropdown = StyledDropdown.extend` +export const SimpleDropdown = styled(StyledDropdown)` margin-left: 10px; text-transform: none; font-size: 0.929em; diff --git a/src/common-elements/fields-layout.ts b/src/common-elements/fields-layout.ts index a5486b23..baffbeab 100644 --- a/src/common-elements/fields-layout.ts +++ b/src/common-elements/fields-layout.ts @@ -54,11 +54,11 @@ export const PropertyCell = styled.td` } `; -export const PropertyCellWithInner = PropertyCell.extend` +export const PropertyCellWithInner = styled(PropertyCell)` padding: 0; `; -export const PropertyNameCell = withProps<{ kind?: string }>(PropertyCell.extend)` +export const PropertyNameCell = withProps<{ kind?: string }>(styled(PropertyCell))` vertical-align: top; line-height: 20px; white-space: nowrap; diff --git a/src/common-elements/fields.ts b/src/common-elements/fields.ts index cba88e6b..c7bd6c60 100644 --- a/src/common-elements/fields.ts +++ b/src/common-elements/fields.ts @@ -4,7 +4,7 @@ import styled, { extensionsHook } from '../styled-components'; import { PropertyNameCell } from './fields-layout'; import { ShelfIcon } from './shelfs'; -export const ClickablePropertyNameCell = PropertyNameCell.extend` +export const ClickablePropertyNameCell = styled(PropertyNameCell)` cursor: pointer; ${ShelfIcon} { @@ -22,21 +22,21 @@ export const FieldLabel = styled.span` line-height: 20px; `; -export const TypePrefix = FieldLabel.extend` +export const TypePrefix = styled(FieldLabel)` color: ${props => transparentize(0.2, props.theme.schema.typeNameColor)}; `; -export const TypeName = FieldLabel.extend` +export const TypeName = styled(FieldLabel)` color: ${props => props.theme.schema.typeNameColor}; `; -export const TypeTitle = FieldLabel.extend` +export const TypeTitle = styled(FieldLabel)` color: ${props => props.theme.schema.typeTitleColor}; `; export const TypeFormat = TypeName; -export const RequiredLabel = FieldLabel.withComponent('div').extend` +export const RequiredLabel = styled(FieldLabel.withComponent('div'))` color: ${props => props.theme.schema.requireLabelColor}; font-size: ${props => props.theme.schema.labelsTextSize}; font-weight: normal; @@ -44,17 +44,17 @@ export const RequiredLabel = FieldLabel.withComponent('div').extend` line-height: 1; `; -export const RecursiveLabel = FieldLabel.extend` +export const RecursiveLabel = styled(FieldLabel)` color: ${({ theme }) => theme.colors.warning.main}; font-size: 13px; `; -export const NullableLabel = FieldLabel.extend` +export const NullableLabel = styled(FieldLabel)` color: #3195a6; font-size: 13px; `; -export const PatternLabel = FieldLabel.extend` +export const PatternLabel = styled(FieldLabel)` color: #3195a6; &::before, &::after { @@ -63,7 +63,7 @@ export const PatternLabel = FieldLabel.extend` } `; -export const ExampleValue = FieldLabel.extend` +export const ExampleValue = styled(FieldLabel)` border-radius: 2px; ${({ theme }) => ` background-color: ${transparentize(0.95, theme.colors.text.primary)}; @@ -79,7 +79,7 @@ export const ExampleValue = FieldLabel.extend` ${extensionsHook('ExampleValue')}; `; -export const ConstraintItem = FieldLabel.extend` +export const ConstraintItem = styled(FieldLabel)` border-radius: 2px; ${({ theme }) => ` background-color: ${transparentize(0.95, theme.colors.primary.light)}; diff --git a/src/common-elements/linkify.ts b/src/common-elements/linkify.tsx similarity index 60% rename from src/common-elements/linkify.ts rename to src/common-elements/linkify.tsx index 4e49900c..24dec735 100644 --- a/src/common-elements/linkify.ts +++ b/src/common-elements/linkify.tsx @@ -1,5 +1,10 @@ +import * as React from 'react'; + +import { StoreConsumer } from '../components/StoreBuilder'; import styled, { css } from '../styled-components'; +import { HistoryService } from '../services'; + // tslint:disable-next-line export const linkifyMixin = className => css` ${className} { @@ -27,6 +32,42 @@ export const linkifyMixin = className => css` } `; -export const ShareLink = styled.a` +const isModifiedEvent = event => + !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); + +export class Link extends React.Component<{ to: string; className?: string; children?: any }> { + navigate = (history: HistoryService, event) => { + if ( + !event.defaultPrevented && // onClick prevented default + event.button === 0 && // ignore everything but left clicks + !isModifiedEvent(event) // ignore clicks with modifier keys + ) { + event.preventDefault(); + history.replace(this.props.to); + } + }; + + render() { + return ( + + {store => ( + + {this.props.children} + + )} + + ); + } +} + +const StyledShareLink = styled(Link)` ${linkifyMixin('&')}; `; + +export function ShareLink(props: { to: string }) { + return ; +} diff --git a/src/common-elements/panels.ts b/src/common-elements/panels.ts index ffe5202e..5757e1f6 100644 --- a/src/common-elements/panels.ts +++ b/src/common-elements/panels.ts @@ -1,32 +1,58 @@ -import styled, { media } from '../styled-components'; +import { SECTION_ATTR } from '../services/MenuStore'; +import styled, { media, withProps } from '../styled-components'; export const MiddlePanel = styled.div` width: calc(100% - ${props => props.theme.rightPanel.width}); - padding: ${props => props.theme.spacing.unit * 8}px; + padding: 0 ${props => props.theme.spacing.unit * 8}px; ${media.lessThan('medium')` width: 100%; `}; `; +export const Section = withProps<{ underlined?: boolean }>( + styled.div.attrs({ + [SECTION_ATTR]: props => props.id, + } as any), +)` + padding: ${props => props.theme.spacing.unit * 8}px 0; + + ${props => + (props.underlined && + ` + position: relative; + + &:not(:last-of-type):after { + position: absolute; + bottom: 0; + width: 100%; + display: block; + content: ''; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + } + `) || + ''} +`; + export const RightPanel = styled.div` width: ${props => props.theme.rightPanel.width}; color: #fafbfc; background-color: ${props => props.theme.rightPanel.backgroundColor}; - padding: ${props => props.theme.spacing.unit * 8}px; + padding: 0 ${props => props.theme.spacing.unit * 8}px; ${media.lessThan('medium')` width: 100%; `}; `; -export const DarkRightPanel = RightPanel.extend` +export const DarkRightPanel = styled(RightPanel)` background-color: ${props => props.theme.rightPanel.backgroundColor}; `; export const Row = styled.div` display: flex; width: 100%; + padding: 0; ${media.lessThan('medium')` flex-direction: column; diff --git a/src/common-elements/perfect-scrollbar.tsx b/src/common-elements/perfect-scrollbar.tsx index 8695eacd..5025f3dd 100644 --- a/src/common-elements/perfect-scrollbar.tsx +++ b/src/common-elements/perfect-scrollbar.tsx @@ -2,6 +2,8 @@ import * as React from 'react'; import PerfectScrollbarType, * as PerfectScrollbarNamespace from 'perfect-scrollbar'; import psStyles from 'perfect-scrollbar/css/perfect-scrollbar.css'; + +import { OptionsContext } from '../components/OptionsProvider'; import styled, { injectGlobal } from '../styled-components'; /* @@ -18,11 +20,13 @@ const StyledScrollWrapper = styled.div` position: relative; `; -export class PerfectScrollbar extends React.Component<{ +export interface PerfectScrollbarProps { options?: PerfectScrollbarType.Options; className?: string; - updateFn: (fn) => void; -}> { + updateFn?: (fn) => void; +} + +export class PerfectScrollbar extends React.Component { private _container: HTMLElement; private inst: PerfectScrollbarType; @@ -49,7 +53,9 @@ export class PerfectScrollbar extends React.Component<{ render() { const { children, className, updateFn } = this.props; - updateFn(this.componentDidUpdate.bind(this)); + if (updateFn) { + updateFn(this.componentDidUpdate.bind(this)); + } return ( @@ -58,3 +64,26 @@ export class PerfectScrollbar extends React.Component<{ ); } } + +export function PerfectScrollbarWrap( + props: PerfectScrollbarProps & { children: JSX.Element[] | JSX.Element }, +) { + return ( + + {options => + !options.nativeScrollbars ? ( + {props.children} + ) : ( +
+ {props.children} +
+ ) + } +
+ ); +} diff --git a/src/common-elements/tabs.ts b/src/common-elements/tabs.ts index cfac747d..602600fc 100644 --- a/src/common-elements/tabs.ts +++ b/src/common-elements/tabs.ts @@ -64,7 +64,7 @@ export const Tabs = styled(ReactTabs)` } `; -export const SmallTabs = Tabs.extend` +export const SmallTabs = styled(Tabs)` > ul { display: block; > li { diff --git a/src/components/ApiInfo/ApiDescription.tsx b/src/components/ApiInfo/ApiDescription.tsx deleted file mode 100644 index 0696578e..00000000 --- a/src/components/ApiInfo/ApiDescription.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react'; - -import { MiddlePanel, Row } from '../../common-elements/'; - -import { Markdown } from '../Markdown/Markdown'; - -export interface ApiDescriptionProps { - description: string; -} - -export class ApiDescription extends React.PureComponent { - render() { - const { description } = this.props; - return ( - - - - - - ); - } -} diff --git a/src/components/ApiInfo/ApiInfo.tsx b/src/components/ApiInfo/ApiInfo.tsx index ef5c43ec..b8206127 100644 --- a/src/components/ApiInfo/ApiInfo.tsx +++ b/src/components/ApiInfo/ApiInfo.tsx @@ -3,9 +3,9 @@ import * as React from 'react'; import { AppStore } from '../../services/AppStore'; -import { MiddlePanel, Row } from '../../common-elements/'; - import { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation'; +import { MiddlePanel, Row, Section } from '../../common-elements/'; +import { Markdown } from '../Markdown/Markdown'; import { StyledMarkdownBlock } from '../Markdown/styled.elements'; import { ApiHeader, @@ -71,41 +71,44 @@ export class ApiInfo extends React.Component { null; return ( - - - - {info.title} ({info.version}) - - {!hideDownloadButton && ( -

- Download OpenAPI specification: - - Download - -

- )} - - {((info.license || info.contact || info.termsOfService) && ( - - - {email} {website} {license} {terms} - - - )) || - null} - - {externalDocs && ( -

- -

- )} -
-
+
+ + + + {info.title} ({info.version}) + + {!hideDownloadButton && ( +

+ Download OpenAPI specification: + + Download + +

+ )} + + {((info.license || info.contact || info.termsOfService) && ( + + + {email} {website} {license} {terms} + + + )) || + null} + + + {externalDocs && ( +

+ +

+ )} +
+
+
); } } diff --git a/src/components/ApiInfo/index.ts b/src/components/ApiInfo/index.ts index c82a5768..07ab5e7c 100644 --- a/src/components/ApiInfo/index.ts +++ b/src/components/ApiInfo/index.ts @@ -1,2 +1 @@ -export { ApiDescription } from './ApiDescription'; export { ApiInfo } from './ApiInfo'; diff --git a/src/components/ApiInfo/styled.elements.ts b/src/components/ApiInfo/styled.elements.ts index c9bc0598..72bebcd4 100644 --- a/src/components/ApiInfo/styled.elements.ts +++ b/src/components/ApiInfo/styled.elements.ts @@ -5,7 +5,7 @@ const delimiterWidth = 15; export const ApiInfoWrap = MiddlePanel; -export const ApiHeader = H1.extend` +export const ApiHeader = styled(H1)` margin-top: 0; margin-bottom: 0.5em; diff --git a/src/components/ContentItems/ContentItems.tsx b/src/components/ContentItems/ContentItems.tsx index 8258ccf8..b05c5a49 100644 --- a/src/components/ContentItems/ContentItems.tsx +++ b/src/components/ContentItems/ContentItems.tsx @@ -1,48 +1,29 @@ import { observer } from 'mobx-react'; import * as React from 'react'; -import { SECTION_ATTR } from '../../services/MenuStore'; +import { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown'; import { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation'; -import { Markdown } from '../Markdown/Markdown'; -import { H1, H2, MiddlePanel, Row, ShareLink } from '../../common-elements'; -import { MDXComponentMeta } from '../../services/MarkdownRenderer'; +import { H1, H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements'; import { ContentItemModel } from '../../services/MenuBuilder'; import { GroupModel, OperationModel } from '../../services/models'; import { Operation } from '../Operation/Operation'; -import { SecurityDefs } from '../SecuritySchemes/SecuritySchemes'; -import { StoreConsumer } from '../StoreBuilder'; @observer export class ContentItems extends React.Component<{ items: ContentItemModel[]; - allowedMdComponents?: Dict; }> { - static defaultProps = { - allowedMdComponents: { - 'security-definitions': { - component: SecurityDefs, - propsSelector: _store => ({ - securitySchemes: _store!.spec.securitySchemes, - }), - }, - }, - }; - render() { const items = this.props.items; if (items.length === 0) { return null; } - return items.map(item => ( - - )); + return items.map(item => ); } } export interface ContentItemProps { item: ContentItemModel; - allowedMdComponents?: Dict; } @observer @@ -68,44 +49,42 @@ export class ContentItem extends React.Component { throw new Error('Unknown item type'); } - return [ -
- {content} -
, - (item as any).items && , - ]; + return ( + <> +
+ {content} +
+ {item.items && } + + ); } } +const middlePanelWrap = component => {component}; + @observer export class SectionItem extends React.Component { render() { const { name, description, externalDocs, level } = this.props.item as GroupModel; - const components = this.props.allowedMdComponents; + const Header = level === 2 ? H2 : H1; return ( - - -
- - {name} -
- {components ? ( - - {store => ( - - )} - - ) : ( - - )} - {externalDocs && ( -

- -

- )} -
-
+ <> + + +
+ + {name} +
+
+
+ + {externalDocs && ( +

+ +

+ )} + ); } } diff --git a/src/components/Fields/FieldDetails.tsx b/src/components/Fields/FieldDetails.tsx index d09194df..246f3ae1 100644 --- a/src/components/Fields/FieldDetails.tsx +++ b/src/components/Fields/FieldDetails.tsx @@ -29,7 +29,14 @@ export class FieldDetails extends React.PureComponent {
{schema.typePrefix} {schema.displayType} - {schema.displayFormat && <{schema.displayFormat}> } + {schema.displayFormat && ( + + {' '} + < + {schema.displayFormat} + >{' '} + + )} {schema.title && ({schema.title}) } {schema.nullable && Nullable } diff --git a/src/components/Markdown/AdvancedMarkdown.tsx b/src/components/Markdown/AdvancedMarkdown.tsx new file mode 100644 index 00000000..b75631d3 --- /dev/null +++ b/src/components/Markdown/AdvancedMarkdown.tsx @@ -0,0 +1,48 @@ +import * as React from 'react'; + +import { AppStore, MarkdownRenderer, RedocNormalizedOptions } from '../../services'; +import { BaseMarkdownProps } from './Markdown'; +import { SanitizedMarkdownHTML } from './SanitizedMdBlock'; + +import { OptionsConsumer } from '../OptionsProvider'; +import { StoreConsumer } from '../StoreBuilder'; + +export interface AdvancedMarkdownProps extends BaseMarkdownProps { + htmlWrap?: (part: JSX.Element) => JSX.Element; +} + +export class AdvancedMarkdown extends React.Component { + render() { + return ( + + {options => ( + {store => this.renderWithOptionsAndStore(options, store)} + )} + + ); + } + + renderWithOptionsAndStore(options: RedocNormalizedOptions, store?: AppStore) { + const { source, htmlWrap = i => i } = this.props; + if (!store) { + throw new Error('When using componentes in markdown, store prop must be provided'); + } + + const renderer = new MarkdownRenderer(options); + const parts = renderer.renderMdWithComponents(source); + + if (!parts.length) { + return null; + } + + return parts.map((part, idx) => { + if (typeof part === 'string') { + return React.cloneElement( + htmlWrap(), + { key: idx }, + ); + } + return ; + }); + } +} diff --git a/src/components/Markdown/Markdown.tsx b/src/components/Markdown/Markdown.tsx index c5233227..0259b04e 100644 --- a/src/components/Markdown/Markdown.tsx +++ b/src/components/Markdown/Markdown.tsx @@ -1,103 +1,35 @@ import * as React from 'react'; -import * as DOMPurify from 'dompurify'; -import { AppStore, MarkdownRenderer, MDXComponentMeta } from '../../services'; -import { OptionsContext } from '../OptionsProvider'; - -import { StyledMarkdownBlock } from './styled.elements'; - -const StyledMarkdownSpan = StyledMarkdownBlock.withComponent('span'); +import { MarkdownRenderer } from '../../services'; +import { SanitizedMarkdownHTML } from './SanitizedMdBlock'; export interface StylingMarkdownProps { dense?: boolean; inline?: boolean; } -export interface BaseMarkdownProps extends StylingMarkdownProps { +export interface BaseMarkdownProps { sanitize?: boolean; - store?: AppStore; -} - -const sanitize = (untrustedSpec, html) => (untrustedSpec ? DOMPurify.sanitize(html) : html); - -function SanitizedMarkdownHTML(props: StylingMarkdownProps & { html: string }) { - const Wrap = props.inline ? StyledMarkdownSpan : StyledMarkdownBlock; - - return ( - - {options => ( - - )} - - ); -} - -export interface MarkdownProps extends BaseMarkdownProps { - allowedComponents?: Dict; source: string; } +export type MarkdownProps = BaseMarkdownProps & + StylingMarkdownProps & { + source: string; + className?: string; + }; + export class Markdown extends React.Component { - constructor(props: MarkdownProps) { - super(props); - - if (props.allowedComponents && props.inline) { - throw new Error('Markdown Component: "inline" mode doesn\'t support "components"'); - } - } - render() { - const { source, allowedComponents, store, inline, dense } = this.props; - - if (allowedComponents && !store) { - throw new Error('When using componentes in markdown, store prop must be provided'); - } - + const { source, inline, dense, className } = this.props; const renderer = new MarkdownRenderer(); - if (allowedComponents) { - return ( - - ); - } else { - return ( - - ); - } - } -} - -export interface AdvancedMarkdownProps extends BaseMarkdownProps { - parts: Array; -} - -export class AdvancedMarkdown extends React.Component { - render() { - const { inline, dense, store, parts } = this.props; - - if (!parts.length) { - return null; - } - return ( - <> - {parts.map( - (part, idx) => - typeof part === 'string' ? ( - - ) : ( - - ), - )} - + ); } } diff --git a/src/components/Markdown/SanitizedMdBlock.tsx b/src/components/Markdown/SanitizedMdBlock.tsx new file mode 100644 index 00000000..9f0a8cb4 --- /dev/null +++ b/src/components/Markdown/SanitizedMdBlock.tsx @@ -0,0 +1,30 @@ +import * as DOMPurify from 'dompurify'; +import * as React from 'react'; + +import { OptionsConsumer } from '../OptionsProvider'; +import { StylingMarkdownProps } from './Markdown'; +import { StyledMarkdownBlock } from './styled.elements'; + +const StyledMarkdownSpan = StyledMarkdownBlock.withComponent('span'); + +const sanitize = (untrustedSpec, html) => (untrustedSpec ? DOMPurify.sanitize(html) : html); + +export function SanitizedMarkdownHTML( + props: StylingMarkdownProps & { html: string; className?: string }, +) { + const Wrap = props.inline ? StyledMarkdownSpan : StyledMarkdownBlock; + + return ( + + {options => ( + + )} + + ); +} diff --git a/src/components/Markdown/styled.elements.ts b/src/components/Markdown/styled.elements.tsx similarity index 96% rename from src/components/Markdown/styled.elements.ts rename to src/components/Markdown/styled.elements.tsx index 512b4531..bed50faf 100644 --- a/src/components/Markdown/styled.elements.ts +++ b/src/components/Markdown/styled.elements.tsx @@ -1,6 +1,6 @@ import { headerCommonMixin, linkifyMixin } from '../../common-elements'; import { PrismDiv } from '../../common-elements/PrismDiv'; -import { css, extensionsHook, withProps } from '../../styled-components'; +import styled, { css, extensionsHook, withProps } from '../../styled-components'; export const linksCss = css` a { @@ -18,7 +18,7 @@ export const linksCss = css` `; export const StyledMarkdownBlock = withProps<{ dense?: boolean; inline?: boolean }>( - PrismDiv.extend, + styled(PrismDiv), )` font-family: ${props => props.theme.typography.fontFamily}; diff --git a/src/components/Operation/Operation.tsx b/src/components/Operation/Operation.tsx index 6aaffa99..da647bde 100644 --- a/src/components/Operation/Operation.tsx +++ b/src/components/Operation/Operation.tsx @@ -19,25 +19,15 @@ import { ResponseSamples } from '../ResponseSamples/ResponseSamples'; import { OperationModel as OperationType } from '../../services/models'; import styled from '../../styled-components'; -const OperationRow = Row.extend` +const OperationRow = styled(Row)` backface-visibility: hidden; contain: content; overflow: hidden; - position: relative; - - &:after { - position: absolute; - bottom: 0; - width: 100%; - display: block; - content: ''; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - } `; const Description = styled(Markdown)` - margin-bottom: ${({ theme }) => theme.spacing.unit * 8}; + margin-bottom: ${({ theme }) => theme.spacing.unit * 6}px; `; export interface OperationProps { @@ -56,7 +46,7 @@ export class Operation extends React.Component {

- + {summary} {deprecated && Deprecated }

{options.pathInMiddlePanel && } diff --git a/src/components/PayloadSamples/MediaTypeSamples.tsx b/src/components/PayloadSamples/MediaTypeSamples.tsx index 9101f2fa..1ae2d2d2 100644 --- a/src/components/PayloadSamples/MediaTypeSamples.tsx +++ b/src/components/PayloadSamples/MediaTypeSamples.tsx @@ -34,7 +34,9 @@ export class MediaTypeSamples extends React.Component { return ( - {examplesNames.map(name => {examples[name].summary || name} )} + {examplesNames.map(name => ( + {examples[name].summary || name} + ))} {examplesNames.map(name => ( {sampleView(examples[name].value)} diff --git a/src/components/PayloadSamples/styled.elements.ts b/src/components/PayloadSamples/styled.elements.ts index 39f20141..644b9a61 100644 --- a/src/components/PayloadSamples/styled.elements.ts +++ b/src/components/PayloadSamples/styled.elements.ts @@ -9,7 +9,7 @@ export const MimeLabel = styled.div` color: rgba(255, 255, 255, 0.8); `; -export const InvertedSimpleDropdown = StyledDropdown.extend` +export const InvertedSimpleDropdown = styled(StyledDropdown)` margin-left: 10px; text-transform: none; font-size: 0.929em; diff --git a/src/components/Redoc/Redoc.tsx b/src/components/Redoc/Redoc.tsx index 023e5244..2b43e77d 100644 --- a/src/components/Redoc/Redoc.tsx +++ b/src/components/Redoc/Redoc.tsx @@ -2,12 +2,12 @@ import * as PropTypes from 'prop-types'; import * as React from 'react'; import { ThemeProvider } from '../../styled-components'; +import { OptionsProvider } from '../OptionsProvider'; import { AppStore } from '../../services'; -import { ApiDescription, ApiInfo } from '../ApiInfo/'; +import { ApiInfo } from '../ApiInfo/'; import { ApiLogo } from '../ApiLogo/ApiLogo'; import { ContentItems } from '../ContentItems/ContentItems'; -import { OptionsProvider } from '../OptionsProvider'; import { SideMenu } from '../SideMenu/SideMenu'; import { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSidebar'; import { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements'; @@ -57,7 +57,6 @@ export class Redoc extends React.Component { - diff --git a/src/components/RedocStandalone.tsx b/src/components/RedocStandalone.tsx index e92c8dff..3540c6f1 100644 --- a/src/components/RedocStandalone.tsx +++ b/src/components/RedocStandalone.tsx @@ -33,7 +33,8 @@ export class RedocStandalone extends React.PureComponent { } return null; }, - options: PropTypes.object, + options: PropTypes.any, + onLoaded: PropTypes.any, }; render() { diff --git a/src/components/Responses/styled.elements.ts b/src/components/Responses/styled.elements.ts index 4b418aca..bb0735da 100644 --- a/src/components/Responses/styled.elements.ts +++ b/src/components/Responses/styled.elements.ts @@ -34,7 +34,7 @@ export const ResponseDetailsWrap = styled.div` padding: 10px; `; -export const HeadersCaption = UnderlinedHeader.withComponent('caption').extend` +export const HeadersCaption = styled(UnderlinedHeader.withComponent('caption'))` text-align: left; margin-top: 1em; caption-side: top; diff --git a/src/components/Schema/ArraySchema.tsx b/src/components/Schema/ArraySchema.tsx index c71faedb..eb8124b2 100644 --- a/src/components/Schema/ArraySchema.tsx +++ b/src/components/Schema/ArraySchema.tsx @@ -3,6 +3,11 @@ import * as React from 'react'; import { Schema, SchemaProps } from './Schema'; import { ArrayClosingLabel, ArrayOpenningLabel } from '../../common-elements'; +import styled from '../../styled-components'; + +const PaddedSchema = styled.div` + padding-left: ${({ theme }) => theme.spacing.unit * 2}px; +`; export class ArraySchema extends React.PureComponent { render() { @@ -10,7 +15,9 @@ export class ArraySchema extends React.PureComponent { return (
Array - + + +
); diff --git a/src/components/SearchBox/SearchBox.tsx b/src/components/SearchBox/SearchBox.tsx index 0715a728..e6ade2c3 100644 --- a/src/components/SearchBox/SearchBox.tsx +++ b/src/components/SearchBox/SearchBox.tsx @@ -7,6 +7,7 @@ import { MenuItem } from '../SideMenu/MenuItem'; import { MarkerService } from '../../services/MarkerService'; import { SearchResult } from '../../services/SearchWorker.worker'; +import { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar'; import { ClearIcon, SearchIcon, @@ -135,21 +136,27 @@ export class SearchBox extends React.PureComponent {results.length > 0 && ( - - {results.map((res, idx) => ( - - ))} - + + + {results.map((res, idx) => ( + + ))} + + )} ); diff --git a/src/components/SearchBox/styled.elements.tsx b/src/components/SearchBox/styled.elements.tsx index 5214ccf4..36222aee 100644 --- a/src/components/SearchBox/styled.elements.tsx +++ b/src/components/SearchBox/styled.elements.tsx @@ -24,7 +24,7 @@ export const SearchInput = styled.input.attrs({ outline: none; `; -export const SearchIcon = styled((props: any) => ( +export const SearchIcon = styled((props: { className?: string }) => ( { return ( - {scheme.id} + {scheme.id} {scheme.scopes.length > 0 && ' ('} - {scheme.scopes.map(scope => {scope})} + {scheme.scopes.map(scope => ( + {scope} + ))} {scheme.scopes.length > 0 && ') '} ); @@ -82,18 +84,23 @@ export class SecurityRequirement extends React.PureComponent props.theme.schema.defaultDetailsWidth}; `; -const AuthHeader = UnderlinedHeader.extend` +const AuthHeader = styled(UnderlinedHeader)` display: inline-block; + margin: 0; `; -const Table = styled.table` +const Wrap = styled.div` width: 100%; + display: flex; + margin: 1em 0; `; export interface SecurityRequirementsProps { @@ -107,20 +114,16 @@ export class SecurityRequirements extends React.PureComponent - -
- - Authorizations: - - - {securities.map((security, idx) => ( - - ))} - -
-
- + + + Authorizations: + + + {securities.map((security, idx) => ( + + ))} + + ); } } diff --git a/src/components/SecuritySchemes/SecuritySchemes.tsx b/src/components/SecuritySchemes/SecuritySchemes.tsx index cff9ecb4..08ca01fd 100644 --- a/src/components/SecuritySchemes/SecuritySchemes.tsx +++ b/src/components/SecuritySchemes/SecuritySchemes.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { SecuritySchemesModel } from '../../services/models'; -import { H2, ShareLink } from '../../common-elements'; +import { H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements'; import { OpenAPISecurityScheme } from '../../types'; import { Markdown } from '../Markdown/Markdown'; import { StyledMarkdownBlock } from '../Markdown/styled.elements'; @@ -66,12 +66,12 @@ export interface SecurityDefsProps { export class SecurityDefs extends React.PureComponent { render() { - return ( -
- {this.props.securitySchemes.schemes.map(scheme => ( -
+ return this.props.securitySchemes.schemes.map(scheme => ( +
+ +

- + {scheme.id}

@@ -118,9 +118,9 @@ export class SecurityDefs extends React.PureComponent { -
- ))} -
- ); +
+ + + )); } } diff --git a/src/components/SideMenu/MenuItem.tsx b/src/components/SideMenu/MenuItem.tsx index 73e9a209..69282b0b 100644 --- a/src/components/SideMenu/MenuItem.tsx +++ b/src/components/SideMenu/MenuItem.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { ShelfIcon } from '../../common-elements/shelfs'; import { IMenuItem, OperationModel } from '../../services'; +import { shortenHTTPVerb } from '../../utils/openapi'; import { MenuItems } from './MenuItems'; import { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements'; @@ -51,7 +52,7 @@ export class MenuItem extends React.Component { {item.type === 'operation' ? ( ) : ( - + {item.name} {this.props.children} @@ -93,7 +94,7 @@ class OperationMenuItemContent extends React.Component - + {shortenHTTPVerb(item.httpVerb)} {item.name} {this.props.children} diff --git a/src/components/SideMenu/SideMenu.tsx b/src/components/SideMenu/SideMenu.tsx index bb5d00c5..bf7c8415 100644 --- a/src/components/SideMenu/SideMenu.tsx +++ b/src/components/SideMenu/SideMenu.tsx @@ -1,11 +1,10 @@ import { observer } from 'mobx-react'; import * as React from 'react'; -import { OptionsContext } from '../OptionsProvider'; import { IMenuItem, MenuStore } from '../../services/MenuStore'; import { MenuItems } from './MenuItems'; -import { PerfectScrollbar } from '../../common-elements/perfect-scrollbar'; +import { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar'; import { RedocAttribution } from './styled.elements'; @observer @@ -15,31 +14,20 @@ export class SideMenu extends React.Component<{ menu: MenuStore; className?: str render() { const store = this.props.menu; return ( - - {options => - options.nativeScrollbars ? ( - - ) : ( - - - - - Documentation Powered by ReDoc - - - - ) - } - + + + + + Documentation Powered by ReDoc + + + ); } diff --git a/src/components/SideMenu/styled.elements.ts b/src/components/SideMenu/styled.elements.ts index 6e0c8794..45ead878 100644 --- a/src/components/SideMenu/styled.elements.ts +++ b/src/components/SideMenu/styled.elements.ts @@ -8,59 +8,55 @@ export const OperationBadge = withProps<{ type: string }>(styled.span).attrs({ })` width: 26px; display: inline-block; - height: ${props => props.theme.typography.code.fontSize};; + height: ${props => props.theme.typography.code.fontSize}; + line-height: ${props => props.theme.typography.code.fontSize}; background-color: #333; border-radius: 3px; - vertical-align: top; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAACgCAMAAADZ0KclAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////////VXz1bAAAAAJ0Uk5T/wDltzBKAAAA80lEQVR42uSWSwLCIAxEX+5/aa2QZBJw5UIt9QMdRqSPEAAw/TyvqzZf150NzdXL49qreXwXjeqz9bqN1tgJl/KLyaVrrL7K7gx+1vlNMqy+helOO4rfBGYZiEkq1ubQ3DeKvc97Et+d+e01vIZlLZZqb1WNJFd8ZKYsmv4Hh3H2fDgjMUI5WSExjiEZs7rEZ5T+/jQn9lhgsw53j/e9MQtxqPsbZY54M5fNl/MY/f1s7NbRSkYlYjc0KPsWMrmhIU9933ywxDiSE+upYNH8TdusUotllNvcAUzfnE/NC4OSYyklQhpdl9E4Tw0Cm4/G9xBgAO7VCkjWLOMfAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 6px 4px; - text-indent: -9000px; + font-size: 7px; + font-family: Verdana; // web-safe + color: white; + text-transform: uppercase; + text-align: center; + font-weight: bold; + vertical-align: middle; margin-right: 6px; margin-top: 2px; &.get { - background-position: 8px -12px; background-color: ${props => props.theme.colors.http.get}; } &.post { - background-position: 6px 4px; background-color: ${props => props.theme.colors.http.post}; } &.put { - background-position: 8px -28px; background-color: ${props => props.theme.colors.http.put}; } &.options { - background-position: 4px -148px; background-color: ${props => props.theme.colors.http.options}; } &.patch { - background-position: 4px -114px; background-color: ${props => props.theme.colors.http.patch}; } &.delete { - background-position: 4px -44px; background-color: ${props => props.theme.colors.http.delete}; } &.basic { - background-position: 5px -79px; background-color: ${props => props.theme.colors.http.basic}; } &.link { - background-position: 4px -131px; background-color: ${props => props.theme.colors.http.link}; } &.head { - background-position: 6px -102px; background-color: ${props => props.theme.colors.http.head}; } `; @@ -120,13 +116,15 @@ export const MenuItemLabel = withProps<{ active: boolean; deprecated?: boolean; type?: string; -}>(styled.label).attrs({ - role: 'menuitem', - className: props => - classnames('-depth' + props.depth, { - active: props.active, - }), -})` +}>( + styled.label.attrs({ + role: 'menuitem', + className: props => + classnames('-depth' + props.depth, { + active: props.active, + }), + }), +)` cursor: pointer; color: ${props => props.active ? props.theme.colors.primary.main : props.theme.colors.text.primary}; @@ -164,9 +162,10 @@ export const MenuItemTitle = withProps<{ width?: string }>(styled.span)` `; export const RedocAttribution = styled.div` + ${({ theme }) => ` font-size: 0.8em; - margin-top: ${({ theme }) => `${theme.spacing.unit * 2}px`}; - padding: ${({ theme }) => `0 ${theme.spacing.unit * 4}px`}; + margin-top: ${theme.spacing.unit * 2}px; + padding: 0 ${theme.spacing.unit * 4}px; text-align: left; opacity: 0.7; @@ -174,9 +173,10 @@ export const RedocAttribution = styled.div` a, a:visited, a:hover { - color: ${({ theme }) => theme.colors.text.primary} !important; + color: ${theme.colors.text.primary} !important; border-top: 1px solid #e1e1e1; - padding-top: 10px; + padding: ${theme.spacing.unit}px 0; display: block; } +`}; `; diff --git a/src/components/SourceCode/SourceCode.tsx b/src/components/SourceCode/SourceCode.tsx index f4075959..bc874cc8 100644 --- a/src/components/SourceCode/SourceCode.tsx +++ b/src/components/SourceCode/SourceCode.tsx @@ -4,8 +4,9 @@ import { highlight } from '../../utils'; import { SampleControls, SampleControlsWrap } from '../../common-elements'; import { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper'; import { PrismDiv } from '../../common-elements/PrismDiv'; +import styled from '../../styled-components'; -const StyledPre = PrismDiv.withComponent('pre').extend` +const StyledPre = styled(PrismDiv.withComponent('pre'))` font-family: ${props => props.theme.typography.code.fontFamily}; font-size: ${props => props.theme.typography.code.fontSize}; overflow-x: auto; diff --git a/src/components/index.ts b/src/components/index.ts index 9810afcc..67ec1de0 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,7 +1,6 @@ export * from './RedocStandalone'; export * from './Redoc/Redoc'; export * from './ApiInfo/ApiInfo'; -export * from './ApiInfo/ApiDescription'; export * from './ApiLogo/ApiLogo'; export * from './ContentItems/ContentItems'; export { ApiContentWrap, BackgroundStub, RedocWrap } from './Redoc/styled.elements'; diff --git a/src/index.ts b/src/index.ts index 98f6c473..05d9cd0a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ export * from './components'; -export { MiddlePanel, Row, RightPanel } from './common-elements/'; +export { MiddlePanel, Row, RightPanel, Section } from './common-elements/'; export * from './services'; export * from './utils'; diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index 1d3614f0..58d0b15f 100644 --- a/src/services/AppStore.ts +++ b/src/services/AppStore.ts @@ -2,7 +2,7 @@ import { observe } from 'mobx'; import { OpenAPISpec } from '../types'; import { loadAndBundleSpec } from '../utils/loadAndBundleSpec'; -import { HistoryService } from './HistoryService'; +import { history } from './HistoryService'; import { MarkerService } from './MarkerService'; import { MenuStore } from './MenuStore'; import { SpecStore } from './models'; @@ -10,6 +10,9 @@ import { RedocNormalizedOptions, RedocRawOptions } from './RedocNormalizedOption import { ScrollService } from './ScrollService'; import { SearchStore } from './SearchStore'; +import { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes'; +import { SECURITY_DEFINITIONS_COMPONENT_NAME } from '../utils/openapi'; + export interface StoreState { menu: { activeItemIdx: number; @@ -64,14 +67,14 @@ export class AppStore { createSearchIndex: boolean = true, ) { this.rawOptions = options; - this.options = new RedocNormalizedOptions(options); + this.options = new RedocNormalizedOptions(options, DEFAULT_OPTIONS); this.scroll = new ScrollService(this.options); // update position statically based on hash (in case of SSR) - MenuStore.updateOnHash(HistoryService.hash, this.scroll); + MenuStore.updateOnHistory(history.currentId, this.scroll); this.spec = new SpecStore(spec, specUrl, this.options); - this.menu = new MenuStore(this.spec, this.scroll); + this.menu = new MenuStore(this.spec, this.scroll, history); if (!this.options.disableSearch) { this.search = new SearchStore(); @@ -86,7 +89,7 @@ export class AppStore { } onDidMount() { - this.menu.updateOnHash(); + this.menu.updateOnHistory(); this.updateMarkOnMenu(this.menu.activeItemIdx); } @@ -137,3 +140,14 @@ export class AppStore { this.marker.mark(); } } + +const DEFAULT_OPTIONS: RedocRawOptions = { + allowedMdComponents: { + [SECURITY_DEFINITIONS_COMPONENT_NAME]: { + component: SecurityDefs, + propsSelector: (store: AppStore) => ({ + securitySchemes: store.spec.securitySchemes, + }), + }, + }, +}; diff --git a/src/services/HistoryService.ts b/src/services/HistoryService.ts index 2a9156f9..da48f946 100644 --- a/src/services/HistoryService.ts +++ b/src/services/HistoryService.ts @@ -4,11 +4,7 @@ import { IS_BROWSER } from '../utils/'; const EVENT = 'hashchange'; -function isSameHash(a: string, b: string): boolean { - return a === b || '#' + a === b || a === '#' + b; -} - -export class IntHistoryService { +export class HistoryService { private _emiter; constructor() { @@ -16,8 +12,15 @@ export class IntHistoryService { this.bind(); } - get hash(): string { - return IS_BROWSER ? window.location.hash : ''; + get currentId(): string { + return IS_BROWSER ? window.location.hash.substring(1) : ''; + } + + linkForId(id: string) { + if (!id) { + return ''; + } + return '#' + id; } subscribe(cb): () => void { @@ -26,7 +29,7 @@ export class IntHistoryService { } emit = () => { - this._emiter.emit(EVENT, this.hash); + this._emiter.emit(EVENT, this.currentId); }; bind() { @@ -43,26 +46,32 @@ export class IntHistoryService { @bind @debounce - update(hash: string | null, rewriteHistory: boolean = false) { - if (hash == null || isSameHash(hash, this.hash)) { + replace(id: string | null, rewriteHistory: boolean = false) { + if (!IS_BROWSER) { + return; + } + + if (id == null || id === this.currentId) { return; } if (rewriteHistory) { - if (IS_BROWSER) { - window.history.replaceState(null, '', window.location.href.split('#')[0] + '#' + hash); - } + window.history.replaceState( + null, + '', + window.location.href.split('#')[0] + this.linkForId(id), + ); + return; } - if (IS_BROWSER) { - window.history.pushState(null, '', window.location.href.split('#')[0] + '#' + hash); - } + window.history.pushState(null, '', window.location.href.split('#')[0] + this.linkForId(id)); + this.emit(); } } -export const HistoryService = new IntHistoryService(); +export const history = new HistoryService(); if (module.hot) { module.hot.dispose(() => { - HistoryService.dispose(); + history.dispose(); }); } diff --git a/src/services/MarkdownRenderer.ts b/src/services/MarkdownRenderer.ts index 95afec75..3494415b 100644 --- a/src/services/MarkdownRenderer.ts +++ b/src/services/MarkdownRenderer.ts @@ -2,6 +2,7 @@ import * as marked from 'marked'; import { highlight, safeSlugify } from '../utils'; import { AppStore } from './AppStore'; +import { RedocNormalizedOptions } from './RedocNormalizedOptions'; const renderer = new marked.Renderer(); @@ -12,7 +13,7 @@ marked.setOptions({ }, }); -export const LEGACY_REGEXP = '^\\s*\\s*$'; +export const LEGACY_REGEXP = '^\\s*\\s*$'; export const MDX_COMPONENT_REGEXP = '^\\s*<{component}\\s*?/>\\s*$'; export const COMPONENT_REGEXP = '(?:' + LEGACY_REGEXP + '|' + MDX_COMPONENT_REGEXP + ')'; @@ -35,13 +36,21 @@ export function buildComponentComment(name: string) { } export class MarkdownRenderer { + static containsComponent(rawText: string, componentName: string) { + const anyCompRegexp = new RegExp( + COMPONENT_REGEXP.replace(/{component}/g, componentName), + 'gmi', + ); + return anyCompRegexp.test(rawText); + } + headings: MarkdownHeading[] = []; currentTopHeading: MarkdownHeading; private headingEnhanceRenderer: marked.Renderer; private originalHeadingRule: typeof marked.Renderer.prototype.heading; - constructor() { + constructor(public options?: RedocNormalizedOptions) { this.headingEnhanceRenderer = new marked.Renderer(); this.originalHeadingRule = this.headingEnhanceRenderer.heading.bind( this.headingEnhanceRenderer, @@ -78,7 +87,9 @@ export class MarkdownRenderer { } attachHeadingsDescriptions(rawText: string) { - const buildRegexp = heading => new RegExp(`##?\\s+${heading.name}`); + const buildRegexp = heading => { + return new RegExp(`##?\\s+${heading.name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}`); + }; const flatHeadings = this.flattenHeadings(this.headings); if (flatHeadings.length < 1) { @@ -138,15 +149,17 @@ export class MarkdownRenderer { // TODO: rewrite this completelly! Regexp-based 👎 // Use marked ecosystem - renderMdWithComponents( - rawText: string, - components: Dict, - ): Array { + renderMdWithComponents(rawText: string): Array { + const components = this.options && this.options.allowedMdComponents; + if (!components || Object.keys(components).length === 0) { + return [this.renderMd(rawText)]; + } + const componentDefs: string[] = []; const names = '(?:' + Object.keys(components).join('|') + ')'; const anyCompRegexp = new RegExp( - COMPONENT_REGEXP.replace(/{component}/g, '(/.exec(htmlTag); - if (match === null || match.length <= 1) { - return { componentName: undefined, attrs: {} }; - } - const componentName = match[1]; - return { - componentName, - attrs: {}, // TODO - }; -} diff --git a/src/services/MenuBuilder.ts b/src/services/MenuBuilder.ts index f1791bf8..6dab0cb8 100644 --- a/src/services/MenuBuilder.ts +++ b/src/services/MenuBuilder.ts @@ -1,5 +1,9 @@ import { OpenAPIOperation, OpenAPIParameter, OpenAPISpec, OpenAPITag, Referenced } from '../types'; -import { isOperationName } from '../utils'; +import { + isOperationName, + SECURITY_DEFINITIONS_COMPONENT_NAME, + setSecuritySchemePrefix, +} from '../utils'; import { MarkdownRenderer } from './MarkdownRenderer'; import { GroupModel, OperationModel } from './models'; import { OpenAPIParser } from './OpenAPIParser'; @@ -38,7 +42,7 @@ export class MenuBuilder { const items: ContentItemModel[] = []; const tagsMap = MenuBuilder.getTagsWithOperations(spec); - items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '')); + items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', options)); if (spec['x-tagGroups']) { items.push( ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options), @@ -53,8 +57,11 @@ export class MenuBuilder { * extracts items from markdown description * @param description - markdown source */ - static addMarkdownItems(description: string): ContentItemModel[] { - const renderer = new MarkdownRenderer(); + static addMarkdownItems( + description: string, + options: RedocNormalizedOptions, + ): ContentItemModel[] { + const renderer = new MarkdownRenderer(options); const headings = renderer.extractHeadings(description || ''); const mapHeadingsDeep = (parent, items, depth = 1) => @@ -64,6 +71,14 @@ export class MenuBuilder { if (heading.items) { group.items = mapHeadingsDeep(group, heading.items, depth + 1); } + if ( + MarkdownRenderer.containsComponent( + group.description || '', + SECURITY_DEFINITIONS_COMPONENT_NAME, + ) + ) { + setSecuritySchemePrefix(group.id + '/'); + } return group; }); diff --git a/src/services/MenuStore.ts b/src/services/MenuStore.ts index bee6c63e..f775070b 100644 --- a/src/services/MenuStore.ts +++ b/src/services/MenuStore.ts @@ -2,10 +2,10 @@ import { action, observable } from 'mobx'; import { querySelector } from '../utils/dom'; import { SpecStore } from './models'; -import { HistoryService } from './HistoryService'; +import { history as historyInst, HistoryService } from './HistoryService'; import { ScrollService } from './ScrollService'; -import { flattenByProp, normalizeHash } from '../utils'; +import { flattenByProp, SECURITY_SCHEMES_SECTION_PREFIX } from '../utils'; import { GROUP_DEPTH } from './MenuBuilder'; export type MenuItemGroupType = 'group' | 'tag' | 'section'; @@ -42,22 +42,24 @@ export class MenuStore { * Statically try update scroll position * Used before hydrating from server-side rendered html to scroll page faster */ - static updateOnHash(hash: string = HistoryService.hash, scroll: ScrollService) { - if (!hash) { + static updateOnHistory(id: string = historyInst.currentId, scroll: ScrollService) { + if (!id) { return; } - scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}="${normalizeHash(hash)}"]`); + scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}="${id}"]`); } /** * active item absolute index (when flattened). -1 means nothing is selected */ - @observable activeItemIdx: number = -1; + @observable + activeItemIdx: number = -1; /** * whether sidebar with menu is opened or not */ - @observable sideBarOpened: boolean = false; + @observable + sideBarOpened: boolean = false; items: IMenuItem[]; flatItems: IMenuItem[]; @@ -73,8 +75,8 @@ export class MenuStore { * @param spec [SpecStore](#SpecStore) which contains page content structure * @param scroll scroll service instance used by this menu */ - constructor(spec: SpecStore, public scroll: ScrollService) { - this.items = spec.operationGroups; + constructor(spec: SpecStore, public scroll: ScrollService, public history: HistoryService) { + this.items = spec.contentItems; this.flatItems = flattenByProp(this.items || [], 'items'); this.flatItems.forEach((item, idx) => (item.absoluteIdx = idx)); @@ -84,7 +86,7 @@ export class MenuStore { subscribe() { this._unsubscribe = this.scroll.subscribe(this.updateOnScroll); - this._hashUnsubscribe = HistoryService.subscribe(this.updateOnHash); + this._hashUnsubscribe = this.history.subscribe(this.updateOnHistory); } @action @@ -132,22 +134,24 @@ export class MenuStore { /** * update active items on hash change - * @param hash current hash + * @param id current hash */ - updateOnHash = (hash: string = HistoryService.hash): boolean => { - if (!hash) { - return false; + updateOnHistory = (id: string = this.history.currentId) => { + if (!id) { + return; } let item: IMenuItem | undefined; - hash = normalizeHash(hash); - item = this.flatItems.find(i => i.id === hash); + item = this.flatItems.find(i => i.id === id); if (item) { this.activateAndScroll(item, false); } else { - this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}="${hash}"]`); + if (id.startsWith(SECURITY_SCHEMES_SECTION_PREFIX)) { + item = this.flatItems.find(i => SECURITY_SCHEMES_SECTION_PREFIX.startsWith(i.id)); + this.activate(item); + } + this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}="${id}"]`); } - return item !== undefined; }; /** @@ -173,13 +177,13 @@ export class MenuStore { /** * activate menu item * @param item item to activate - * @param updateHash [true] whether to update location hash + * @param updateLocation [true] whether to update location * @param rewriteHistory [false] whether to rewrite browser history (do not create new enrty) */ @action activate( item: IMenuItem | undefined, - updateHash: boolean = true, + updateLocation: boolean = true, rewriteHistory: boolean = false, ) { if ((this.activeItem && this.activeItem.id) === (item && item.id)) { @@ -187,7 +191,7 @@ export class MenuStore { } this.deactivate(this.activeItem); if (!item) { - HistoryService.update('', rewriteHistory); + this.history.replace('', rewriteHistory); return; } @@ -198,8 +202,8 @@ export class MenuStore { } this.activeItemIdx = item.absoluteIdx!; - if (updateHash) { - HistoryService.update(item.id, rewriteHistory); + if (updateLocation) { + this.history.replace(item.id, rewriteHistory); } item.activate(); @@ -226,10 +230,14 @@ export class MenuStore { * @see MenuStore.activate */ @action.bound - activateAndScroll(item: IMenuItem | undefined, updateHash?: boolean, rewriteHistory?: boolean) { + activateAndScroll( + item: IMenuItem | undefined, + updateLocation?: boolean, + rewriteHistory?: boolean, + ) { // item here can be a copy from search results so find corresponding item from menu const menuItem = (item && this.getItemById(item.id)) || item; - this.activate(menuItem, updateHash, rewriteHistory); + this.activate(menuItem, updateLocation, rewriteHistory); this.scrollToActive(); if (!menuItem || !menuItem.items.length) { this.closeSidebar(); diff --git a/src/services/OpenAPIParser.ts b/src/services/OpenAPIParser.ts index 05cdf77d..f841dd24 100644 --- a/src/services/OpenAPIParser.ts +++ b/src/services/OpenAPIParser.ts @@ -4,8 +4,8 @@ import { OpenAPIRef, OpenAPISchema, OpenAPISpec, Referenced } from '../types'; import { appendToMdHeading, IS_BROWSER } from '../utils/'; import { JsonPointer } from '../utils/JsonPointer'; -import { isNamedDefinition } from '../utils/openapi'; -import { buildComponentComment, COMPONENT_REGEXP, MDX_COMPONENT_REGEXP } from './MarkdownRenderer'; +import { isNamedDefinition, SECURITY_DEFINITIONS_COMPONENT_NAME } from '../utils/openapi'; +import { buildComponentComment, MarkdownRenderer } from './MarkdownRenderer'; import { RedocNormalizedOptions } from './RedocNormalizedOptions'; export type MergedOpenAPISchema = OpenAPISchema & { parentRefs?: string[] }; @@ -74,16 +74,8 @@ export class OpenAPIParser { ) { // Automatically inject Authentication section with SecurityDefinitions component const description = spec.info.description || ''; - const legacySecurityRegexp = new RegExp( - COMPONENT_REGEXP.replace('{component}', ''), - 'mi', - ); - const securityRegexp = new RegExp( - MDX_COMPONENT_REGEXP.replace('{component}', 'security-definitions'), - 'mi', - ); - if (!legacySecurityRegexp.test(description) && !securityRegexp.test(description)) { - const comment = buildComponentComment('security-definitions'); + if (!MarkdownRenderer.containsComponent(description, SECURITY_DEFINITIONS_COMPONENT_NAME)) { + const comment = buildComponentComment(SECURITY_DEFINITIONS_COMPONENT_NAME); spec.info.description = appendToMdHeading(description, 'Authentication', comment); } } @@ -264,7 +256,9 @@ export class OpenAPIParser { if (subSchemaRef) { receiver.parentRefs!.push(subSchemaRef); if (receiver.title === undefined && isNamedDefinition(subSchemaRef)) { - receiver.title = JsonPointer.baseName(subSchemaRef); + // this is not so correct behaviour. comented out for now + // ref: https://github.com/Rebilly/ReDoc/issues/601 + // receiver.title = JsonPointer.baseName(subSchemaRef); } } } diff --git a/src/services/RedocNormalizedOptions.ts b/src/services/RedocNormalizedOptions.ts index 8c3e0462..851d4b1b 100644 --- a/src/services/RedocNormalizedOptions.ts +++ b/src/services/RedocNormalizedOptions.ts @@ -2,6 +2,8 @@ import defaultTheme, { ResolvedThemeInterface, resolveTheme, ThemeInterface } fr import { querySelector } from '../utils/dom'; import { isNumeric, mergeObjects } from '../utils/helpers'; +import { MDXComponentMeta } from './MarkdownRenderer'; + export interface RedocRawOptions { theme?: ThemeInterface; scrollYOffset?: number | string | (() => number); @@ -17,6 +19,8 @@ export interface RedocRawOptions { disableSearch?: boolean | string; unstable_ignoreMimeParameters?: boolean; + + allowedMdComponents?: Dict; } function argValueToBoolean(val?: string | boolean): boolean { @@ -98,9 +102,11 @@ export class RedocNormalizedOptions { /* tslint:disable-next-line */ unstable_ignoreMimeParameters: boolean; + allowedMdComponents: Dict; - constructor(raw: RedocRawOptions) { + constructor(raw: RedocRawOptions, defaults: RedocRawOptions = {}) { let hook; + raw = { ...defaults, ...raw }; if (raw.theme && raw.theme.extensionsHook) { hook = raw.theme.extensionsHook; raw.theme.extensionsHook = undefined; @@ -120,5 +126,7 @@ export class RedocNormalizedOptions { this.disableSearch = argValueToBoolean(raw.disableSearch); this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters); + + this.allowedMdComponents = raw.allowedMdComponents || {}; } } diff --git a/src/services/SpecStore.ts b/src/services/SpecStore.ts index 2f0ab5e5..dcb39941 100644 --- a/src/services/SpecStore.ts +++ b/src/services/SpecStore.ts @@ -13,7 +13,7 @@ export class SpecStore { info: ApiInfoModel; externalDocs?: OpenAPIExternalDocumentation; - operationGroups: ContentItemModel[]; + contentItems: ContentItemModel[]; securitySchemes: SecuritySchemesModel; constructor( @@ -24,8 +24,7 @@ export class SpecStore { this.parser = new OpenAPIParser(spec, specUrl, options); this.info = new ApiInfoModel(this.parser); this.externalDocs = this.parser.spec.externalDocs; - this.operationGroups = MenuBuilder.buildStructure(this.parser, this.options); - + this.contentItems = MenuBuilder.buildStructure(this.parser, this.options); this.securitySchemes = new SecuritySchemesModel(this.parser); } } diff --git a/src/services/__tests__/MarkdownRenderer.test.ts b/src/services/__tests__/MarkdownRenderer.test.ts index 4ed71494..89f308c6 100644 --- a/src/services/__tests__/MarkdownRenderer.test.ts +++ b/src/services/__tests__/MarkdownRenderer.test.ts @@ -1,9 +1,21 @@ -import { MarkdownRenderer } from '../MarkdownRenderer'; +import { MarkdownRenderer, MDXComponentMeta } from '../MarkdownRenderer'; +import { RedocNormalizedOptions } from '../RedocNormalizedOptions'; + +const TestComponent = () => null; describe('Markdown renderer', () => { let renderer: MarkdownRenderer; beforeEach(() => { - renderer = new MarkdownRenderer(); + renderer = new MarkdownRenderer( + new RedocNormalizedOptions({ + allowedMdComponents: { + 'security-definitions': { + component: TestComponent, + propsSelector: () => ({}), + }, + }, + }), + ); }); test('should return a level-1 heading even though only level-2 is present', () => { @@ -19,4 +31,33 @@ describe('Markdown renderer', () => { expect(headings[0].items).toBeDefined(); expect(headings[0].items).toHaveLength(1); }); + + test('renderMdWithComponents should work with legacy syntax', () => { + const source = 'Hello!\n\nBye'; + const parts = renderer.renderMdWithComponents(source); + expect(parts).toHaveLength(3); + expect(parts[0]).toEqual('

Hello!

\n'); + expect(typeof parts[1]).toEqual('object'); + expect((parts[1] as MDXComponentMeta).component).toEqual(TestComponent); + expect(parts[2]).toEqual('

Bye

\n'); + }); + + test('renderMdWithComponents should work with mdx-like syntax', () => { + const source = 'Hello!\n\nBye'; + const parts = renderer.renderMdWithComponents(source); + expect(parts).toHaveLength(3); + expect(parts[0]).toEqual('

Hello!

\n'); + expect(typeof parts[1]).toEqual('object'); + expect((parts[1] as MDXComponentMeta).component).toBe(TestComponent); + expect(parts[2]).toEqual('

Bye

\n'); + }); + + test('renderMdWithComponents should parse attribute names', () => { + const source = ''; + const parts = renderer.renderMdWithComponents(source); + expect(parts).toHaveLength(1); + const part = parts[0] as MDXComponentMeta; + expect(part.component).toBe(TestComponent); + expect(part.attrs).toEqual({ pointer: 'test' }); + }); }); diff --git a/src/services/__tests__/fixtures/oneOfTitles.json b/src/services/__tests__/fixtures/oneOfTitles.json new file mode 100644 index 00000000..68b0e4e4 --- /dev/null +++ b/src/services/__tests__/fixtures/oneOfTitles.json @@ -0,0 +1,79 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "1.0", + "title": "Foo" + }, + "components": { + "schemas": { + "Test": { + "type": "object", + "properties": { + "any": { + "anyOf": [ + { + "$ref": "#/components/schemas/Foo" + }, + { + "$ref": "#/components/schemas/Bar" + } + ] + }, + "one": { + "oneOf": [ + { + "$ref": "#/components/schemas/Foo" + }, + { + "$ref": "#/components/schemas/Bar" + } + ] + }, + "all": { + "allOf": [ + { + "$ref": "#/components/schemas/Foo" + }, + { + "$ref": "#/components/schemas/Bar" + } + ] + } + } + }, + "Foo": { + "type": "object", + "properties": { + "foo": { + "type": "string" + } + } + }, + "Bar": { + "type": "object", + "properties": { + "bar": { + "type": "string" + } + } + }, + "WithArray": { + "oneOf": [{ + "type" : "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + } + }, { + "type": "string" + }] + } + } + } +} \ No newline at end of file diff --git a/src/services/__tests__/history.service.test.ts b/src/services/__tests__/history.service.test.ts index 26255faa..753340d0 100644 --- a/src/services/__tests__/history.service.test.ts +++ b/src/services/__tests__/history.service.test.ts @@ -1,25 +1,38 @@ -import { HistoryService } from '../HistoryService'; +import { history } from '../HistoryService'; describe('History service', () => { test('should be an instance', () => { - expect(typeof HistoryService).not.toBe('function'); - expect(HistoryService.subscribe).toBeDefined(); + expect(typeof history).not.toBe('function'); + expect(history.subscribe).toBeDefined(); }); test('History subscribe', () => { const fn = jest.fn(); - HistoryService.subscribe(fn); - HistoryService.emit(); + history.subscribe(fn); + history.emit(); expect(fn).toHaveBeenCalled(); }); test('History subscribe should return unsubsribe function', () => { const fn = jest.fn(); - const unsubscribe = HistoryService.subscribe(fn); - HistoryService.emit(); + const unsubscribe = history.subscribe(fn); + history.emit(); expect(fn).toHaveBeenCalled(); unsubscribe(); - HistoryService.emit(); + history.emit(); expect(fn).toHaveBeenCalledTimes(1); }); + + test('currentId should return correct id', () => { + window.location.hash = '#testid'; + expect(history.currentId).toEqual('testid'); + }); + + test('should return correct link for id', () => { + expect(history.linkForId('testid')).toEqual('#testid'); + }); + + test('should return empty link for empty id', () => { + expect(history.linkForId('')).toEqual(''); + }); }); diff --git a/src/services/__tests__/models/Schema.test.ts b/src/services/__tests__/models/Schema.test.ts index 9c1c20fe..dc4b1d6e 100644 --- a/src/services/__tests__/models/Schema.test.ts +++ b/src/services/__tests__/models/Schema.test.ts @@ -15,5 +15,29 @@ describe('Models', () => { expect(schema.oneOf).toHaveLength(1); expect(schema.discriminatorProp).toEqual('type'); }); + + test('oneOf/allOf titles', () => { + const spec = require('../fixtures/oneOfTitles.json'); + parser = new OpenAPIParser(spec, undefined, opts); + const schema = new SchemaModel(parser, spec.components.schemas.Test, '', opts); + expect(schema.fields).toHaveLength(3); + const oneOfField = schema.fields[0]; + expect(oneOfField.schema.displayType).toBe('Foo (object) or Bar (object)'); + expect(oneOfField.schema.oneOf[0].title).toBe('Foo'); + expect(oneOfField.schema.oneOf[1].title).toBe('Bar'); + + const anyOfField = schema.fields[1]; + expect(anyOfField.schema.displayType).toBe('Foo (object) or Bar (object)'); + expect(anyOfField.schema.oneOf[0].title).toBe('Foo'); + expect(anyOfField.schema.oneOf[1].title).toBe('Bar'); + }); + + test('oneOf/allOf schema complex displayType', () => { + const spec = require('../fixtures/oneOfTitles.json'); + parser = new OpenAPIParser(spec, undefined, opts); + const schema = new SchemaModel(parser, spec.components.schemas.WithArray, '', opts); + expect(schema.oneOf).toHaveLength(2); + expect(schema.displayType).toBe('(Array of string or number) or string'); + }); }); }); diff --git a/src/services/__tests__/prism.test.ts b/src/services/__tests__/prism.test.ts index 8f982f1d..75396c7b 100644 --- a/src/services/__tests__/prism.test.ts +++ b/src/services/__tests__/prism.test.ts @@ -16,4 +16,8 @@ describe('prism.js helpers', () => { test('highlight raw text should just return text', () => { expect(highlight('Hello world', 'clike')).toBe('Hello world'); }); + + test('highlight should not throw with lang undefined', () => { + expect(highlight('Hello world', undefined)).toBe('Hello world'); + }); }); diff --git a/src/services/models/Field.ts b/src/services/models/Field.ts index 1dba916f..192c9ee2 100644 --- a/src/services/models/Field.ts +++ b/src/services/models/Field.ts @@ -10,7 +10,8 @@ import { SchemaModel } from './Schema'; * Field or Parameter model ready to be used by components */ export class FieldModel { - @observable expanded: boolean = false; + @observable + expanded: boolean = false; schema: SchemaModel; name: string; diff --git a/src/services/models/Group.model.ts b/src/services/models/Group.model.ts index 34f2b73c..c1aaa246 100644 --- a/src/services/models/Group.model.ts +++ b/src/services/models/Group.model.ts @@ -21,8 +21,10 @@ export class GroupModel implements IMenuItem { parent?: GroupModel; externalDocs?: OpenAPIExternalDocumentation; - @observable active: boolean = false; - @observable expanded: boolean = false; + @observable + active: boolean = false; + @observable + expanded: boolean = false; depth: number; level: number; diff --git a/src/services/models/MediaContent.ts b/src/services/models/MediaContent.ts index dd3cc300..32fd770e 100644 --- a/src/services/models/MediaContent.ts +++ b/src/services/models/MediaContent.ts @@ -14,7 +14,8 @@ import { RedocNormalizedOptions } from '../RedocNormalizedOptions'; export class MediaContentModel { mediaTypes: MediaTypeModel[]; - @observable activeMimeIdx = 0; + @observable + activeMimeIdx = 0; /** * @param isRequestType needed to know if skipe RO/RW fields in objects diff --git a/src/services/models/MediaType.ts b/src/services/models/MediaType.ts index dd87b3ef..ff471e27 100644 --- a/src/services/models/MediaType.ts +++ b/src/services/models/MediaType.ts @@ -56,7 +56,7 @@ export class MediaTypeModel { value: sample, }; } - } else { + } else if (this.schema) { this.examples = { default: new ExampleModel(parser, { value: Sampler.sample( diff --git a/src/services/models/Operation.ts b/src/services/models/Operation.ts index c1abcdce..a63fa776 100644 --- a/src/services/models/Operation.ts +++ b/src/services/models/Operation.ts @@ -40,9 +40,12 @@ export class OperationModel implements IMenuItem { depth: number; - @observable ready?: boolean = true; - @observable active: boolean = false; - @observable expanded: boolean = false; + @observable + ready?: boolean = true; + @observable + active: boolean = false; + @observable + expanded: boolean = false; //#endregion pointer: string; diff --git a/src/services/models/Response.ts b/src/services/models/Response.ts index c18f4097..3fc4d06c 100644 --- a/src/services/models/Response.ts +++ b/src/services/models/Response.ts @@ -9,7 +9,8 @@ import { FieldModel } from './Field'; import { MediaContentModel } from './MediaContent'; export class ResponseModel { - @observable expanded: boolean; + @observable + expanded: boolean; content?: MediaContentModel; code: string; diff --git a/src/services/models/Schema.ts b/src/services/models/Schema.ts index 576a7475..69f0e0b0 100644 --- a/src/services/models/Schema.ts +++ b/src/services/models/Schema.ts @@ -49,7 +49,8 @@ export class SchemaModel { oneOf?: SchemaModel[]; oneOfType: string; discriminatorProp: string; - @observable activeOneOf: number = 0; + @observable + activeOneOf: number = 0; rawSchema: OpenAPISchema; schema: MergedOpenAPISchema; @@ -162,13 +163,24 @@ export class SchemaModel { parser, { // merge base schema into each of oneOf's subschemas - allOf: [variant, { ...this.schema, oneOf: undefined, anyOf: undefined }], + ...variant, + allOf: [{ ...this.schema, oneOf: undefined, anyOf: undefined }], } as OpenAPISchema, this.pointer + '/oneOf/' + idx, this.options, ), ); - this.displayType = this.oneOf.map(schema => schema.displayType).join(' or '); + this.displayType = this.oneOf + .map(schema => { + let name = + schema.typePrefix + + (schema.title ? `${schema.title} (${schema.displayType})` : schema.displayType); + if (name.indexOf(' or ') > -1) { + name = `(${name})`; + } + return name; + }) + .join(' or '); } private initDiscriminator( diff --git a/src/services/models/SecurityRequirement.ts b/src/services/models/SecurityRequirement.ts index e7c57663..0fc62a79 100644 --- a/src/services/models/SecurityRequirement.ts +++ b/src/services/models/SecurityRequirement.ts @@ -1,5 +1,5 @@ import { OpenAPISecurityRequirement, OpenAPISecurityScheme } from '../../types'; -import { SECURITY_SCHEMES_SECTION } from '../../utils/openapi'; +import { SECURITY_SCHEMES_SECTION_PREFIX } from '../../utils/openapi'; import { OpenAPIParser } from '../OpenAPIParser'; export interface SecurityScheme extends OpenAPISecurityScheme { @@ -27,7 +27,7 @@ export class SecurityRequirementModel { return { ...scheme, id, - sectionId: SECURITY_SCHEMES_SECTION + id, + sectionId: SECURITY_SCHEMES_SECTION_PREFIX + id, scopes, }; }) diff --git a/src/services/models/SecuritySchemes.ts b/src/services/models/SecuritySchemes.ts index 7b8452be..fc5deda8 100644 --- a/src/services/models/SecuritySchemes.ts +++ b/src/services/models/SecuritySchemes.ts @@ -1,5 +1,5 @@ import { OpenAPISecurityScheme, Referenced } from '../../types'; -import { SECURITY_SCHEMES_SECTION } from '../../utils/openapi'; +import { SECURITY_SCHEMES_SECTION_PREFIX } from '../../utils/openapi'; import { OpenAPIParser } from '../OpenAPIParser'; export class SecuritySchemeModel { @@ -25,7 +25,7 @@ export class SecuritySchemeModel { constructor(parser: OpenAPIParser, id: string, scheme: Referenced) { const info = parser.deref(scheme); this.id = id; - this.sectionId = SECURITY_SCHEMES_SECTION + id; + this.sectionId = SECURITY_SCHEMES_SECTION_PREFIX + id; this.type = info.type; this.description = info.description || ''; if (info.type === 'apiKey') { diff --git a/src/utils/dom.ts b/src/utils/dom.ts index bce67e84..ce91a33a 100644 --- a/src/utils/dom.ts +++ b/src/utils/dom.ts @@ -24,10 +24,6 @@ export function html2Str(html: string): string { .join(' '); } -export function normalizeHash(hash: string): string { - return hash.startsWith('#') ? hash.substr(1) : hash; -} - // scrollIntoViewIfNeeded polyfill if (typeof Element !== 'undefined' && !(Element as any).prototype.scrollIntoViewIfNeeded) { diff --git a/src/utils/highlight.ts b/src/utils/highlight.ts index a642e25a..061d05a8 100644 --- a/src/utils/highlight.ts +++ b/src/utils/highlight.ts @@ -16,6 +16,7 @@ import 'prismjs/components/prism-php.js'; import 'prismjs/components/prism-python.js'; import 'prismjs/components/prism-ruby.js'; import 'prismjs/components/prism-scala.js'; +import 'prismjs/components/prism-sql.js'; import 'prismjs/components/prism-swift.js'; const DEFAULT_LANG = 'clike'; @@ -42,7 +43,7 @@ export function mapLang(lang: string): string { * @param lang highlight language * @return highlighted souce code as **html string** */ -export function highlight(source: string, lang: string): string { +export function highlight(source: string, lang: string = DEFAULT_LANG): string { lang = lang.toLowerCase(); let grammar = Prism.languages[lang]; if (!grammar) { diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index 080d010f..3d91ac12 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -275,4 +275,14 @@ export function normalizeServers( }); } -export const SECURITY_SCHEMES_SECTION = 'section/Authentication/'; +export const SECURITY_DEFINITIONS_COMPONENT_NAME = 'security-definitions'; +export let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/'; +export function setSecuritySchemePrefix(prefix: string) { + SECURITY_SCHEMES_SECTION_PREFIX = prefix; +} + +export const shortenHTTPVerb = verb => + ({ + delete: 'del', + options: 'opts', + }[verb] || verb); diff --git a/webpack.config.ts b/webpack.config.ts index 03dc1f5d..302aefb4 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -88,8 +88,11 @@ export default (env: { standalone?: boolean } = {}, { mode }) => ({ { loader: 'babel-loader', options: { + generatorOpts: { + decoratorsBeforeExport: true, + }, plugins: [ - '@babel/plugin-syntax-typescript', + ['@babel/plugin-syntax-typescript', { isTSX: true }], ['@babel/plugin-syntax-decorators', { legacy: true }], '@babel/plugin-syntax-jsx', [ @@ -114,6 +117,7 @@ export default (env: { standalone?: boolean } = {}, { mode }) => ({ transpileOnly: true, compilerOptions: { allowJs: true, + declaration: false, }, }, }, diff --git a/yarn.lock b/yarn.lock index 72e8af44..5a341c92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,158 +2,159 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" +"@babel/code-frame@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.2.tgz#12b6daeb408238360744649d16c0e9fa7ab3859e" dependencies: - "@babel/highlight" "7.0.0-beta.47" + "@babel/highlight" "7.0.0-rc.2" "@babel/code-frame@^7.0.0-beta.35", "@babel/code-frame@^7.0.0-beta.39": - version "7.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz#980d1560b863575bf5a377925037e0132ef5921e" + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10" dependencies: - "@babel/highlight" "7.0.0-beta.53" + "@babel/highlight" "7.0.0-rc.1" -"@babel/core@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.47.tgz#b9c164fb9a1e1083f067c236a9da1d7a7d759271" +"@babel/core@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.2.tgz#dcb46b3adb63e35b1e82c35d9130d9c27be58427" dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/generator" "7.0.0-beta.47" - "@babel/helpers" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" + "@babel/code-frame" "7.0.0-rc.2" + "@babel/generator" "7.0.0-rc.2" + "@babel/helpers" "7.0.0-rc.2" + "@babel/parser" "7.0.0-rc.2" + "@babel/template" "7.0.0-rc.2" + "@babel/traverse" "7.0.0-rc.2" + "@babel/types" "7.0.0-rc.2" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" - lodash "^4.17.5" - micromatch "^2.3.11" + lodash "^4.17.10" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.47.tgz#1835709f377cc4d2a4affee6d9258a10bbf3b9d1" +"@babel/generator@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.2.tgz#7aed8fb4ef1bdcc168225096b5b431744ba76bf8" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.2" jsesc "^2.5.1" - lodash "^4.17.5" + lodash "^4.17.10" source-map "^0.5.0" trim-right "^1.0.1" "@babel/helper-annotate-as-pure@^7.0.0-beta.37": - version "7.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz#59960628375cbeef96a07edfe1ca38b756f01aa8" + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-rc.1.tgz#4a9042a4a35f835d45c649f68f364cc7ed7dcb05" dependencies: - "@babel/types" "7.0.0-beta.53" + "@babel/types" "7.0.0-rc.1" -"@babel/helper-function-name@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz#8057d63e951e85c57c02cdfe55ad7608d73ffb7d" +"@babel/helper-function-name@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.2.tgz#ad7bb9df383c5f53e4bf38c0fe0c7f93e6a27729" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.47" - "@babel/template" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" + "@babel/helper-get-function-arity" "7.0.0-rc.2" + "@babel/template" "7.0.0-rc.2" + "@babel/types" "7.0.0-rc.2" -"@babel/helper-get-function-arity@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz#2de04f97c14b094b55899d3fa83144a16d207510" +"@babel/helper-get-function-arity@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.2.tgz#323cb82e2d805b40c0c36be1dfcb8ffcbd0434f3" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.2" -"@babel/helper-plugin-utils@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.47.tgz#4f564117ec39f96cf60fafcde35c9ddce0e008fd" +"@babel/helper-plugin-utils@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-rc.2.tgz#95bc3225bf6aeda5a5ebc90af2546b5b9317c0b4" -"@babel/helper-split-export-declaration@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz#e11277855472d8d83baf22f2d0186c4a2059b09a" +"@babel/helper-split-export-declaration@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.2.tgz#726b2dec4e46baeab32db67caa6e88b6521464f8" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.2" -"@babel/helpers@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.47.tgz#f9b42ed2e4d5f75ec0fb2e792c173e451e8d40fd" +"@babel/helpers@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.2.tgz#e21f54451824f55b4f5022c6e9d6fa7df65e8746" dependencies: - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" + "@babel/template" "7.0.0-rc.2" + "@babel/traverse" "7.0.0-rc.2" + "@babel/types" "7.0.0-rc.2" -"@babel/highlight@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" +"@babel/highlight@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.1.tgz#e0ca4731fa4786f7b9500421d6ff5e5a7753e81e" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-beta.53": - version "7.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.53.tgz#f4e952dad1787d205e188d3e384cdce49ca368fb" +"@babel/highlight@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.2.tgz#0af688a69e3709d9cf392e1837cda18c08d34d4f" dependencies: chalk "^2.0.0" esutils "^2.0.2" - js-tokens "^3.0.0" + js-tokens "^4.0.0" -"@babel/plugin-syntax-decorators@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.47.tgz#a42f10fcd651940bc475d93b3ac23432b4a8a293" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" +"@babel/parser@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.2.tgz#a98c01af5834e71d48a5108e3aeeee333cdf26c4" -"@babel/plugin-syntax-jsx@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-beta.47.tgz#f3849d94288695d724bd205b4f6c3c99e4ec24a4" +"@babel/plugin-syntax-decorators@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-rc.2.tgz#b7a02a4a9911dc8191b8c15ae52b852a78432afb" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-rc.2" -"@babel/plugin-syntax-typescript@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-beta.47.tgz#108d4c83ff48ddcb8f0532252a9892e805ddc64c" +"@babel/plugin-syntax-jsx@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-rc.2.tgz#c070fd6057ad85c43ba4e7819723e28e760824ff" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-rc.2" -"@babel/template@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.47.tgz#0473970a7c0bee7a1a18c1ca999d3ba5e5bad83d" +"@babel/plugin-syntax-typescript@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-rc.2.tgz#887e16d19dab3ab579bf63464dc2ef5ffb65b37c" dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" - lodash "^4.17.5" + "@babel/helper-plugin-utils" "7.0.0-rc.2" -"@babel/traverse@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.47.tgz#0e57fdbb9ff3a909188b6ebf1e529c641e6c82a4" +"@babel/template@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.2.tgz#53f6be6c1336ddc7744625c9bdca9d10be5d5d72" dependencies: - "@babel/code-frame" "7.0.0-beta.47" - "@babel/generator" "7.0.0-beta.47" - "@babel/helper-function-name" "7.0.0-beta.47" - "@babel/helper-split-export-declaration" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - babylon "7.0.0-beta.47" + "@babel/code-frame" "7.0.0-rc.2" + "@babel/parser" "7.0.0-rc.2" + "@babel/types" "7.0.0-rc.2" + +"@babel/traverse@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.2.tgz#6e54ebe82aa1b3b3cf5ec05594bc14d7c59c9766" + dependencies: + "@babel/code-frame" "7.0.0-rc.2" + "@babel/generator" "7.0.0-rc.2" + "@babel/helper-function-name" "7.0.0-rc.2" + "@babel/helper-split-export-declaration" "7.0.0-rc.2" + "@babel/parser" "7.0.0-rc.2" + "@babel/types" "7.0.0-rc.2" debug "^3.1.0" globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.17.5" + lodash "^4.17.10" -"@babel/types@7.0.0-beta.47": - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.47.tgz#e6fcc1a691459002c2671d558a586706dddaeef8" +"@babel/types@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.1.tgz#6abf6d14ddd9fc022617e5b62e6b32f4fa6526ad" dependencies: esutils "^2.0.2" - lodash "^4.17.5" + lodash "^4.17.10" to-fast-properties "^2.0.0" -"@babel/types@7.0.0-beta.53": - version "7.0.0-beta.53" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.53.tgz#19a461c0da515595dfb6740b4b45dc7bb0e6b375" +"@babel/types@7.0.0-rc.2": + version "7.0.0-rc.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.2.tgz#8e025b78764cee8751823e308558a3ca144ebd9d" dependencies: esutils "^2.0.2" - lodash "^4.17.5" + lodash "^4.17.10" to-fast-properties "^2.0.0" "@cypress/listr-verbose-renderer@0.4.1": @@ -216,26 +217,26 @@ version "0.0.31" resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-0.0.31.tgz#f152d5a81f2b5625e29f11eb016cd9b301d0d4b4" -"@types/enzyme-to-json@^1.5.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/enzyme-to-json/-/enzyme-to-json-1.5.1.tgz#493c4bec91e8efbff9373029a5a79ab74748d39d" +"@types/enzyme-to-json@^1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/enzyme-to-json/-/enzyme-to-json-1.5.2.tgz#fc33d5c6d81c1bd3ab35460c402185a7dcb94ef2" dependencies: "@types/enzyme" "*" -"@types/enzyme@*", "@types/enzyme@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.11.tgz#0a059d2fe2c686f024ada911d24473cdb2e13903" +"@types/enzyme@*", "@types/enzyme@^3.1.13": + version "3.1.13" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.13.tgz#4bbc5c81fa40c9fc7efee25c4a23cb37119a33ea" dependencies: "@types/cheerio" "*" "@types/react" "*" -"@types/jest@^23.1.6": - version "23.1.6" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.1.6.tgz#11c88f738f5b57d1a9dd4970c576a6639b8f0f37" +"@types/jest@^23.3.1": + version "23.3.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.1.tgz#a4319aedb071d478e6f407d1c4578ec8156829cf" "@types/jquery@*": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.4.tgz#f1850fb9a70041a14ace4f81a7ed782db8548317" + version "3.3.6" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.6.tgz#5932ead926307ca21e5b36808257f7c926b06565" "@types/jquery@3.2.16": version "3.2.16" @@ -249,13 +250,13 @@ version "4.14.87" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b" -"@types/lodash@^4.14.112": - version "4.14.112" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.112.tgz#4a8d8e5716b97a1ac01fe1931ad1e4cba719de5a" +"@types/lodash@^4.14.116": + version "4.14.116" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" -"@types/lunr@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@types/lunr/-/lunr-2.1.5.tgz#afb90226a6d2eb472eb1732cef7493a02b0177fd" +"@types/lunr@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@types/lunr/-/lunr-2.1.6.tgz#52f6cffbe30700c70e1b75886e520839eaab5a4a" "@types/mark.js@^8.11.1": version "8.11.1" @@ -263,9 +264,9 @@ dependencies: "@types/jquery" "*" -"@types/marked@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.4.0.tgz#057a6165703e7419217f8ffc6887747f980b6315" +"@types/marked@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.4.1.tgz#6595701c4d0dfde9d04894d3be04b8a97a49e0d7" "@types/minimatch@3.0.3": version "3.0.3" @@ -276,20 +277,22 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.44.tgz#1d4a798e53f35212fd5ad4d04050620171cd5b5e" "@types/node@*": - version "10.5.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707" + version "10.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.7.1.tgz#b704d7c259aa40ee052eec678758a68d07132a2e" "@types/prismjs@^1.6.4": version "1.9.0" resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.9.0.tgz#38af9491e2f105079a443703ee675fb27371ec94" -"@types/prop-types@^15.5.3": - version "15.5.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.3.tgz#bef071852dca2a2dbb65fecdb7bfb30cedae2de2" +"@types/prop-types@*", "@types/prop-types@^15.5.5": + version "15.5.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.5.tgz#17038dd322c2325f5da650a94d5f9974943625e3" + dependencies: + "@types/react" "*" -"@types/react-dom@^16.0.6": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.6.tgz#f1a65a4e7be8ed5d123f8b3b9eacc913e35a1a3c" +"@types/react-dom@^16.0.7": + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.7.tgz#54d0f867a76b90597e8432030d297982f25c20ba" dependencies: "@types/node" "*" "@types/react" "*" @@ -301,16 +304,17 @@ "@types/node" "*" "@types/react" "*" -"@types/react-tabs@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/react-tabs/-/react-tabs-1.0.4.tgz#747d10c0a2d02ae44a8e9692018f54fc96e99967" +"@types/react-tabs@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/react-tabs/-/react-tabs-1.0.5.tgz#4af76e27c5356d72e0cad73559938158cd9d0911" dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.4.6": - version "16.4.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.6.tgz#5024957c6bcef4f02823accf5974faba2e54fada" +"@types/react@*", "@types/react@^16.4.11": + version "16.4.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.11.tgz#330f3d864300f71150dc2d125e48644c098f8770" dependencies: + "@types/prop-types" "*" csstype "^2.2.0" "@types/sinon-chai@2.7.29": @@ -346,18 +350,18 @@ version "1.13.6" resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.6.tgz#128d1685a7c34d31ed17010fc87d6a12c1de6976" -"@types/webpack@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.4.6.tgz#91e909370c89aca6e6c55d3bcc3026bc21b2bae6" +"@types/webpack@^4.4.11": + version "4.4.11" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.4.11.tgz#0ca832870d55c4e92498c01d22d00d02b0f62ae9" dependencies: "@types/node" "*" "@types/tapable" "*" "@types/uglify-js" "*" source-map "^0.6.0" -"@types/yargs@^11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.0.tgz#923caa0cca53745d83f139eeff4fa7906c52ebce" +"@types/yargs@^11.1.1": + version "11.1.1" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.1.tgz#2e724257167fd6b615dbe4e54301e65fe597433f" "@webassemblyjs/ast@1.5.13": version "1.5.13" @@ -496,8 +500,8 @@ long "^3.2.0" JSONStream@^1.0.4: - version "1.3.3" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" + version "1.3.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -506,6 +510,10 @@ abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -539,7 +547,7 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.6.2: +acorn@^5.0.0, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2: version "5.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" @@ -561,13 +569,6 @@ ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0, ajv@^5.5.2: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" @@ -740,6 +741,14 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +array.prototype.flat@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -757,17 +766,15 @@ asn1.js@^4.0.0: minimalistic-assert "^1.0.0" asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -790,9 +797,9 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" +async@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" dependencies: lodash "^4.14.0" @@ -814,17 +821,13 @@ atob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.2.1, aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +aws4@^1.6.0, aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" axios@0.15.3: version "0.15.3" @@ -1017,9 +1020,9 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.0.tgz#22c34c392e2176f6a4c367992a7fcff69d2e8557" +babel-jest@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877" dependencies: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" @@ -1440,10 +1443,6 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24. lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@7.0.0-beta.47: - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -1555,12 +1554,6 @@ boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1698,8 +1691,8 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" buffer-from@^1.0.0, buffer-from@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" buffer-indexof@^1.0.0: version "1.1.1" @@ -1718,8 +1711,8 @@ buffer@^4.3.0: isarray "^1.0.0" buffer@^5.0.3: - version "5.1.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" + version "5.2.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.0.tgz#53cf98241100099e9eeae20ee6d51d21b16e541e" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1846,8 +1839,8 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" caniuse-lite@^1.0.30000792: - version "1.0.30000865" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25" + version "1.0.30000877" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000877.tgz#f189673b86ecc06436520e3e391de6a13ca923b4" capture-exit@^1.2.0: version "1.2.0" @@ -1963,9 +1956,9 @@ ci-env@^1.4.0: version "1.6.1" resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.6.1.tgz#3e3ef4fc528a2825397f912cfa30cde17ec364cc" -ci-info@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" +ci-info@^1.0.0, ci-info@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.3.1.tgz#da21bc65a5f0d0d250c19a169065532b42fa048c" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2085,7 +2078,7 @@ colors@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: +combined-stream@1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: @@ -2095,10 +2088,14 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@2.16.x, commander@^2.11.0, commander@^2.12.1, commander@~2.16.0: +commander@2.16.x, commander@~2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" +commander@^2.11.0, commander@^2.12.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -2210,12 +2207,12 @@ conventional-changelog-atom@^2.0.0: dependencies: q "^1.5.1" -conventional-changelog-cli@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-2.0.1.tgz#1bceb924a063b05757e131e93d6674bd7d3f5bc7" +conventional-changelog-cli@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-2.0.5.tgz#37c2477ea43522a5f63e52ad977d8c9e1f863211" dependencies: add-stream "^1.0.0" - conventional-changelog "^2.0.1" + conventional-changelog "^2.0.3" lodash "^4.2.1" meow "^4.0.0" tempfile "^1.1.1" @@ -2226,9 +2223,9 @@ conventional-changelog-codemirror@^2.0.0: dependencies: q "^1.5.1" -conventional-changelog-core@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.0.0.tgz#228bc97f436bbdde3fd6009557d16ce04497512c" +conventional-changelog-core@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.0.tgz#96a81bb3301b4b2a3dc2851cc54c5fb674ac1942" dependencies: conventional-changelog-writer "^4.0.0" conventional-commits-parser "^3.0.0" @@ -2244,9 +2241,9 @@ conventional-changelog-core@^3.0.0: read-pkg-up "^1.0.1" through2 "^2.0.0" -conventional-changelog-ember@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.0.tgz#4104571fc8871bcf08501a3d5252b25d1a9a070c" +conventional-changelog-ember@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.1.tgz#5a5595b9ed50a6daca4bd3508a47ffe4a1a7152f" dependencies: q "^1.5.1" @@ -2281,9 +2278,9 @@ conventional-changelog-jshint@^2.0.0: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-preset-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.0.tgz#69fea3db554d9b2a95dcaf7c603c1a0a389a7603" +conventional-changelog-preset-loader@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.1.tgz#d134734e0cc1b91b88b30586c5991f31442029f1" conventional-changelog-writer@^4.0.0: version "4.0.0" @@ -2300,21 +2297,21 @@ conventional-changelog-writer@^4.0.0: split "^1.0.0" through2 "^2.0.0" -conventional-changelog@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-2.0.1.tgz#0d8f0f9668eaeaa5edd612896e7f3cc4385b31c9" +conventional-changelog@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-2.0.3.tgz#779cff582c0091d2b24574003eaa82ef5ddf653d" dependencies: conventional-changelog-angular "^1.6.6" conventional-changelog-atom "^2.0.0" conventional-changelog-codemirror "^2.0.0" - conventional-changelog-core "^3.0.0" - conventional-changelog-ember "^2.0.0" + conventional-changelog-core "^3.1.0" + conventional-changelog-ember "^2.0.1" conventional-changelog-eslint "^3.0.0" conventional-changelog-express "^2.0.0" conventional-changelog-jquery "^0.1.0" conventional-changelog-jscs "^0.1.0" conventional-changelog-jshint "^2.0.0" - conventional-changelog-preset-loader "^2.0.0" + conventional-changelog-preset-loader "^2.0.1" conventional-commits-filter@^2.0.0: version "2.0.0" @@ -2460,12 +2457,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2540,15 +2531,15 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" -"cssstyle@>= 0.3.1 < 0.4.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.3.1.tgz#6da9b4cff1bc5d716e6e5fe8e04fcb1b50a49adf" +cssstyle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.0.0.tgz#79b16d51ec5591faec60e688891f15d2a5705129" dependencies: cssom "0.3.x" csstype@^2.2.0: - version "2.5.5" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.5.tgz#4125484a3d42189a863943f23b9e4b80fedfa106" + version "2.5.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz#2ae1db2319642d8b80a668d2d025c6196071e788" currently-unhandled@^0.4.1: version "0.4.1" @@ -2560,9 +2551,9 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -cypress@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.0.2.tgz#90caef84c91bd52b9cdf123aa76213249a289694" +cypress@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.1.0.tgz#b718ba64289b887c7ab7a7f09245d871a4a409ba" dependencies: "@cypress/listr-verbose-renderer" "0.4.1" "@cypress/xvfb" "1.2.3" @@ -2587,13 +2578,13 @@ cypress@~3.0.2: executable "4.1.1" extract-zip "1.6.6" fs-extra "4.0.1" - getos "2.8.4" + getos "3.1.0" glob "7.1.2" is-ci "1.0.10" is-installed-globally "0.1.0" lazy-ass "1.6.0" listr "0.12.0" - lodash "4.17.4" + lodash "4.17.10" log-symbols "2.2.0" minimist "1.2.0" progress "1.1.8" @@ -2709,11 +2700,10 @@ default-require-extensions@^2.0.0: strip-bom "^3.0.0" define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" + object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" @@ -2902,7 +2892,7 @@ domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" -domexception@^1.0.0: +domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" dependencies: @@ -2920,9 +2910,9 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -dompurify@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-1.0.6.tgz#1600725187f22fe26f4afac80bf33c42ad76fe51" +dompurify@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-1.0.7.tgz#33e5c4a5fc84df93b58ca162d1d3f28537aa3ec2" domutils@1.1: version "1.1.6" @@ -2964,26 +2954,27 @@ duplexify@^3.4.2, duplexify@^3.6.0: stream-shift "^1.0.0" ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" dependencies: jsbn "~0.1.0" + safer-buffer "^2.1.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" electron-to-chromium@^1.3.30: - version "1.3.52" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz#d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0" + version "1.3.58" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.58.tgz#8267a4000014e93986d9d18c65a8b4022ca75188" elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -3025,24 +3016,26 @@ entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -enzyme-adapter-react-16@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4" +enzyme-adapter-react-16@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.2.0.tgz#c6e80f334e0a817873262d7d01ee9e4747e3c97e" dependencies: - enzyme-adapter-utils "^1.3.0" - lodash "^4.17.4" - object.assign "^4.0.4" + enzyme-adapter-utils "^1.5.0" + function.prototype.name "^1.1.0" + object.assign "^4.1.0" object.values "^1.0.4" - prop-types "^15.6.0" + prop-types "^15.6.2" + react-is "^16.4.2" react-reconciler "^0.7.0" react-test-renderer "^16.0.0-0" -enzyme-adapter-utils@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.4.0.tgz#c403b81e8eb9953658569e539780964bdc98de62" +enzyme-adapter-utils@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.5.0.tgz#a020ab3ae79bb1c85e1d51f48f35e995e0eed810" dependencies: + function.prototype.name "^1.1.0" object.assign "^4.1.0" - prop-types "^15.6.0" + prop-types "^15.6.2" enzyme-to-json@^3.3.4: version "3.3.4" @@ -3050,20 +3043,21 @@ enzyme-to-json@^3.3.4: dependencies: lodash "^4.17.4" -enzyme@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.3.0.tgz#0971abd167f2d4bf3f5bd508229e1c4b6dc50479" +enzyme@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.4.4.tgz#92c7c6b9e59d4ef0c3d36a75dccc0e41a5c14d21" dependencies: + array.prototype.flat "^1.2.1" cheerio "^1.0.0-rc.2" - function.prototype.name "^1.0.3" - has "^1.0.1" + function.prototype.name "^1.1.0" + has "^1.0.3" is-boolean-object "^1.0.0" - is-callable "^1.1.3" + is-callable "^1.1.4" is-number-object "^1.0.3" is-string "^1.0.4" is-subset "^0.1.1" lodash "^4.17.4" - object-inspect "^1.5.0" + object-inspect "^1.6.0" object-is "^1.0.1" object.assign "^4.1.0" object.entries "^1.0.4" @@ -3083,7 +3077,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" dependencies: @@ -3102,8 +3096,8 @@ es-to-primitive@^1.1.1: is-symbol "^1.0.1" es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.45" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653" + version "0.10.46" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" @@ -3146,7 +3140,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@^1.9.0: +escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" dependencies: @@ -3350,14 +3344,14 @@ expand-template@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" -expect@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.4.0.tgz#6da4ecc99c1471253e7288338983ad1ebadb60c3" +expect@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" dependencies: ansi-styles "^3.2.0" - jest-diff "^23.2.0" + jest-diff "^23.5.0" jest-get-type "^22.1.0" - jest-matcher-utils "^23.2.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" @@ -3409,9 +3403,9 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.0, extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +extend@~3.0.1, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" external-editor@^2.0.4: version "2.2.0" @@ -3422,8 +3416,8 @@ external-editor@^2.0.4: tmp "^0.0.33" external-editor@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6" + version "3.0.1" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.1.tgz#fc9638c4d7cde4f0bb82b12307a1a23912c492e3" dependencies: chardet "^0.5.0" iconv-lite "^0.4.22" @@ -3646,8 +3640,8 @@ follow-redirects@1.0.0: debug "^2.2.0" follow-redirects@^1.0.0, follow-redirects@^1.2.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291" + version "1.5.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.5.tgz#3c143ca599a2e22e62876687d68b23d55bad788b" dependencies: debug "^3.1.0" @@ -3661,7 +3655,7 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@^2.0.4, foreach@^2.0.5: +foreach@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -3669,7 +3663,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -fork-ts-checker-webpack-plugin@^0.4.3: +fork-ts-checker-webpack-plugin@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.4.3.tgz#f08baa5122ee3de8760c5935e724f4f9f214fea8" dependencies: @@ -3685,15 +3679,7 @@ fork-ts-checker-webpack-plugin@^0.4.3: tapable "^1.0.0" vue-parser "^1.1.5" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: +form-data@~2.3.1, form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -3785,7 +3771,7 @@ function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -function.prototype.name@^1.0.3: +function.prototype.name@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" dependencies: @@ -3836,11 +3822,11 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" -getos@2.8.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/getos/-/getos-2.8.4.tgz#7b8603d3619c28e38cb0fe7a4f63c3acb80d5163" +getos@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.0.tgz#db3aa4df15a3295557ce5e81aa9e3e5cdfaa6567" dependencies: - async "2.1.4" + async "2.4.0" getpass@^0.1.1: version "0.1.7" @@ -3932,8 +3918,8 @@ global-dirs@^0.1.0: ini "^1.3.4" global-modules-path@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb" + version "2.3.0" + resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" global@^4.3.0: version "4.3.2" @@ -4021,21 +4007,10 @@ handlebars@^4.0.2, handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -4043,6 +4018,13 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -4096,7 +4078,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1: +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" dependencies: @@ -4116,15 +4098,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -4137,10 +4110,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" @@ -4262,14 +4231,6 @@ http-proxy@^1.16.2: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4293,7 +4254,7 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.17, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.23, iconv-lite@^0.4.17, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -4400,8 +4361,8 @@ inquirer@^3.0.6: through "^2.3.6" inquirer@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.0.0.tgz#e8c20303ddc15bbfc2c12a6213710ccd9e1413d8" + version "6.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.1.0.tgz#8f65c7b31c498285f4ddf3b742ad8c487892040b" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -4427,7 +4388,7 @@ interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" -invariant@^2.2.0, invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -4441,9 +4402,9 @@ ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" -ipaddr.js@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" is-accessor-descriptor@^0.1.6: version "0.1.6" @@ -4481,7 +4442,7 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3: +is-callable@^1.1.1, is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -4492,10 +4453,10 @@ is-ci@1.0.10: ci-info "^1.0.0" is-ci@^1.0.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.0.tgz#3f4a08d6303a09882cef3f0fb97439c5f5ce2d53" dependencies: - ci-info "^1.0.0" + ci-info "^1.3.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4809,15 +4770,15 @@ istanbul-reports@^1.3.0: dependencies: handlebars "^4.0.3" -jest-changed-files@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.0.tgz#f1b304f98c235af5d9a31ec524262c5e4de3c6ff" +jest-changed-files@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" dependencies: throat "^4.0.0" -jest-cli@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.4.1.tgz#c1ffd33254caee376990aa2abe2963e0de4ca76b" +jest-cli@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -4830,19 +4791,19 @@ jest-cli@^23.4.1: istanbul-lib-coverage "^1.2.0" istanbul-lib-instrument "^1.10.1" istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.0" - jest-config "^23.4.1" + jest-changed-files "^23.4.2" + jest-config "^23.5.0" jest-environment-jsdom "^23.4.0" jest-get-type "^22.1.0" - jest-haste-map "^23.4.1" + jest-haste-map "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.4.1" - jest-runner "^23.4.1" - jest-runtime "^23.4.1" - jest-snapshot "^23.4.1" + jest-resolve-dependencies "^23.5.0" + jest-runner "^23.5.0" + jest-runtime "^23.5.0" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" + jest-validate "^23.5.0" jest-watcher "^23.4.0" jest-worker "^23.2.0" micromatch "^2.3.11" @@ -4856,32 +4817,33 @@ jest-cli@^23.4.1: which "^1.2.12" yargs "^11.0.0" -jest-config@^23.0.0, jest-config@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.4.1.tgz#3172fa21f0507d7f8a088ed1dbe4157057f201e9" +jest-config@^23.0.0, jest-config@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773" dependencies: babel-core "^6.0.0" - babel-jest "^23.4.0" + babel-jest "^23.4.2" chalk "^2.0.1" glob "^7.1.1" jest-environment-jsdom "^23.4.0" jest-environment-node "^23.4.0" jest-get-type "^22.1.0" - jest-jasmine2 "^23.4.1" + jest-jasmine2 "^23.5.0" jest-regex-util "^23.3.0" - jest-resolve "^23.4.1" + jest-resolve "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" - pretty-format "^23.2.0" + jest-validate "^23.5.0" + micromatch "^2.3.11" + pretty-format "^23.5.0" -jest-diff@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" +jest-diff@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-docblock@^23.2.0: version "23.2.0" @@ -4889,12 +4851,12 @@ jest-docblock@^23.2.0: dependencies: detect-newline "^2.1.0" -jest-each@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.4.0.tgz#2fa9edd89daa1a4edc9ff9bf6062a36b71345143" +jest-each@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba" dependencies: chalk "^2.0.1" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-environment-jsdom@^23.4.0: version "23.4.0" @@ -4915,47 +4877,49 @@ jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.4.1.tgz#43a174ba7ac079ae1dd74eaf5a5fe78989474dd2" +jest-haste-map@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" + invariant "^2.2.4" jest-docblock "^23.2.0" jest-serializer "^23.0.1" jest-worker "^23.2.0" micromatch "^2.3.11" sane "^2.0.0" -jest-jasmine2@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz#fa192262430d418e827636e4a98423e5e7ff0fce" +jest-jasmine2@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53" dependencies: + babel-traverse "^6.0.0" chalk "^2.0.1" co "^4.6.0" - expect "^23.4.0" + expect "^23.5.0" is-generator-fn "^1.0.0" - jest-diff "^23.2.0" - jest-each "^23.4.0" - jest-matcher-utils "^23.2.0" + jest-diff "^23.5.0" + jest-each "^23.5.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" - jest-snapshot "^23.4.1" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" -jest-leak-detector@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" +jest-leak-detector@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64" dependencies: - pretty-format "^23.2.0" + pretty-format "^23.5.0" -jest-matcher-utils@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" +jest-matcher-utils@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-message-util@^23.4.0: version "23.4.0" @@ -4975,42 +4939,42 @@ jest-regex-util@^23.3.0: version "23.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" -jest-resolve-dependencies@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.1.tgz#a1d85247e2963f8b3859f6b0ec61b741b359378e" +jest-resolve-dependencies@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7" dependencies: jest-regex-util "^23.3.0" - jest-snapshot "^23.4.1" + jest-snapshot "^23.5.0" -jest-resolve@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.4.1.tgz#7f3c17104732a2c0c940a01256025ed745814982" +jest-resolve@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6" dependencies: browser-resolve "^1.11.3" chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.4.1.tgz#d41fd1459b95d35d6df685f1468c09e617c8c260" +jest-runner@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7" dependencies: exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^23.4.1" + jest-config "^23.5.0" jest-docblock "^23.2.0" - jest-haste-map "^23.4.1" - jest-jasmine2 "^23.4.1" - jest-leak-detector "^23.2.0" + jest-haste-map "^23.5.0" + jest-jasmine2 "^23.5.0" + jest-leak-detector "^23.5.0" jest-message-util "^23.4.0" - jest-runtime "^23.4.1" + jest-runtime "^23.5.0" jest-util "^23.4.0" jest-worker "^23.2.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.4.1.tgz#c1822eba5eb19294debe6b25b2760d0a8c532fd1" +jest-runtime@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce" dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -5019,14 +4983,14 @@ jest-runtime@^23.4.1: exit "^0.1.2" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.11" - jest-config "^23.4.1" - jest-haste-map "^23.4.1" + jest-config "^23.5.0" + jest-haste-map "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" - jest-resolve "^23.4.1" - jest-snapshot "^23.4.1" + jest-resolve "^23.5.0" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" + jest-validate "^23.5.0" micromatch "^2.3.11" realpath-native "^1.0.0" slash "^1.0.0" @@ -5038,20 +5002,19 @@ jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" -jest-snapshot@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.4.1.tgz#090de9acae927f6a3af3005bda40d912b83e9c96" +jest-snapshot@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79" dependencies: - babel-traverse "^6.0.0" babel-types "^6.0.0" chalk "^2.0.1" - jest-diff "^23.2.0" - jest-matcher-utils "^23.2.0" + jest-diff "^23.5.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" - jest-resolve "^23.4.1" + jest-resolve "^23.5.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" semver "^5.5.0" jest-util@^23.4.0: @@ -5067,14 +5030,14 @@ jest-util@^23.4.0: slash "^1.0.0" source-map "^0.6.0" -jest-validate@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.4.0.tgz#d96eede01ef03ac909c009e9c8e455197d48c201" +jest-validate@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-watcher@^23.4.0: version "23.4.0" @@ -5090,18 +5053,18 @@ jest-worker@^23.2.0: dependencies: merge-stream "^1.0.1" -jest@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.4.1.tgz#39550c72f3237f63ae1b434d8d122cdf6fa007b6" +jest@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.5.0.tgz#80de353d156ea5ea4a7332f7962ac79135fbc62e" dependencies: import-local "^1.0.0" - jest-cli "^23.4.1" + jest-cli "^23.5.0" js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5117,34 +5080,34 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.11.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.11.0.tgz#df486efad41aee96c59ad7a190e2449c7eb1110e" + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" dependencies: - abab "^1.0.4" - acorn "^5.3.0" + abab "^2.0.0" + acorn "^5.5.3" acorn-globals "^4.1.0" array-equal "^1.0.0" cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.3.1 < 0.4.0" + cssstyle "^1.0.0" data-urls "^1.0.0" - domexception "^1.0.0" - escodegen "^1.9.0" + domexception "^1.0.1" + escodegen "^1.9.1" html-encoding-sniffer "^1.0.2" - left-pad "^1.2.0" - nwsapi "^2.0.0" + left-pad "^1.3.0" + nwsapi "^2.0.7" parse5 "4.0.0" pn "^1.1.0" - request "^2.83.0" + request "^2.87.0" request-promise-native "^1.0.5" sax "^1.2.4" symbol-tree "^3.2.2" - tough-cookie "^2.3.3" + tough-cookie "^2.3.4" w3c-hr-time "^1.0.1" webidl-conversions "^4.0.2" whatwg-encoding "^1.0.3" whatwg-mimetype "^2.1.0" whatwg-url "^6.4.1" - ws "^4.0.0" + ws "^5.2.0" xml-name-validator "^3.0.0" jsesc@^1.3.0: @@ -5169,9 +5132,9 @@ json-pointer@^0.6.0: dependencies: foreach "^2.0.4" -json-schema-ref-parser@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-5.1.1.tgz#adfc84bbcd3ec41536ec9df5364734884afcf1c1" +json-schema-ref-parser@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-5.1.2.tgz#c9cdaec76ea894f71eb3776c3b3291dfa62e56c9" dependencies: call-me-maybe "^1.0.1" debug "^3.1.0" @@ -5194,12 +5157,6 @@ json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5273,9 +5230,9 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" -kleur@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-1.0.1.tgz#6b64a4a42c7226fc0319fec35904f824ad945f7e" +kleur@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.1.tgz#7cc64b0d188d0dcbc98bdcdfdda2cc10619ddce8" lazy-ass@1.6.0: version "1.6.0" @@ -5295,7 +5252,7 @@ lcov-parse@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" -left-pad@^1.2.0: +left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -5310,9 +5267,9 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-checker@^20.1.0: - version "20.1.0" - resolved "https://registry.yarnpkg.com/license-checker/-/license-checker-20.1.0.tgz#3b460707d8e26687b4b7f4d43237d30c07464051" +license-checker@^20.2.0: + version "20.2.0" + resolved "https://registry.yarnpkg.com/license-checker/-/license-checker-20.2.0.tgz#edb2605fd714514ed16e7eeee5b88a41900241d2" dependencies: chalk "^2.4.1" debug "^3.1.0" @@ -5396,7 +5353,7 @@ loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^0.2.16, loader-utils@~0.2.2: +loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" dependencies: @@ -5496,11 +5453,7 @@ lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" -lodash@4.17.4: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: +lodash@4.17.10, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -5581,9 +5534,9 @@ lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" -lunr@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.0.tgz#4d7c0ca12bdd1e0447b0c131b91420929740c88f" +lunr@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.2.tgz#7164301092b2d7ab664573156f686df5c25c4185" make-dir@^1.0.0: version "1.3.0" @@ -5753,19 +5706,15 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.34.0 < 2": +"mime-db@>= 1.34.0 < 2", mime-db@~1.35.0: version "1.35.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.19" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" dependencies: - mime-db "~1.33.0" + mime-db "~1.35.0" mime@1.4.1: version "1.4.1" @@ -5823,8 +5772,8 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + version "2.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -5869,9 +5818,9 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi dependencies: minimist "0.0.8" -mobx-react@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-5.2.3.tgz#cdf6141c2fe63377c5813cbd254e8ce0d4676631" +mobx-react@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-5.2.5.tgz#fc44ac17e1798f6b590f064b831d8a1d89850ef0" dependencies: hoist-non-react-statics "^2.5.0" react-lifecycles-compat "^3.0.2" @@ -5884,6 +5833,10 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" +moo@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5939,17 +5892,18 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" nearley@^2.7.10: - version "2.13.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.13.0.tgz#6e7b0f4e68bfc3e74c99eaef2eda39e513143439" + version "2.15.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.15.1.tgz#965e4e6ec9ed6b80fc81453e161efbcebb36d247" dependencies: + moo "^0.4.3" nomnom "~1.6.2" railroad-diagrams "^1.0.0" randexp "0.4.6" semver "^5.4.1" needle@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + version "2.2.2" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418" dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -5960,8 +5914,8 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" neo-async@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" + version "2.5.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" next-tick@1: version "1.0.0" @@ -5991,16 +5945,16 @@ node-fetch@^1.0.1: is-stream "^1.0.1" node-fetch@^2.0.0, node-fetch@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + version "2.2.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" node-gyp@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203" + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -6009,7 +5963,7 @@ node-gyp@^3.6.2: nopt "2 || 3" npmlog "0 || 1 || 2 || 3 || 4" osenv "0" - request ">=2.9.0 <2.82.0" + request "^2.87.0" rimraf "2" semver "~5.3.0" tar "^2.0.0" @@ -6117,12 +6071,12 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: remove-trailing-separator "^1.0.1" npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" npm-packlist@^1.1.6: - version "1.1.10" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + version "1.1.11" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -6152,9 +6106,9 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nwsapi@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.5.tgz#3998cfe7a014600e5e30dedb1fef2a4404b2871f" +nwsapi@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.8.tgz#e3603579b7e162b3dbedae4fb24e46f771d8fa24" oas-kit-common@^1.0.3: version "1.0.3" @@ -6195,10 +6149,14 @@ oas-validator@^1.1.7: reftools "^1.0.2" should "^13.2.1" -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -6211,7 +6169,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.5.0: +object-inspect@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" @@ -6219,7 +6177,7 @@ object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" -object-keys@^1.0.11, object-keys@^1.0.8: +object-keys@^1.0.11, object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" @@ -6229,7 +6187,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" dependencies: @@ -6307,14 +6265,14 @@ onetime@^2.0.0: mimic-fn "^1.0.0" ono@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.5.tgz#bc62740493a5c1c08b2c21e60cbb0e5c56ab7de2" + version "4.0.6" + resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.6.tgz#b865214e07dacf6e6dc7f1d498c7fba42a810ff5" dependencies: format-util "^1.0.3" -openapi-sampler@1.0.0-beta.13: - version "1.0.0-beta.13" - resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.0.0-beta.13.tgz#bb8ea6f38471d6f0140c716e5f89242d1d277093" +openapi-sampler@1.0.0-beta.14: + version "1.0.0-beta.14" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.0.0-beta.14.tgz#e06807f33a9c0fab841e212f5fb90e7af4acf30c" dependencies: json-pointer "^0.6.0" @@ -6352,10 +6310,10 @@ ora@^0.2.3: object-assign "^4.0.1" original@>=0.0.5: - version "1.0.1" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190" + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" dependencies: - url-parse "~1.4.0" + url-parse "^1.4.3" os-browserify@^0.3.0: version "0.3.0" @@ -6533,8 +6491,8 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" path-to-regexp@0.1.7: version "0.1.7" @@ -6572,10 +6530,6 @@ perfect-scrollbar@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.4.0.tgz#5d014ef9775e1f43058a1dbae9ed1daf0e7091f1" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6618,13 +6572,13 @@ pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" -polished@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.3.tgz#d61b8a0c4624efe31e2583ff24a358932b6b75e1" +polished@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-2.0.2.tgz#968aa98a86a51d611ccbfe23d3593afea7184b90" portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + version "1.0.16" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.16.tgz#a6a68be9c352bc66c1a4c17a261f661f3facaf52" dependencies: async "^1.5.2" debug "^2.2.0" @@ -6719,9 +6673,9 @@ prettier-eslint@^8.8.2: typescript-eslint-parser "^16.0.0" vue-eslint-parser "^2.0.2" -prettier@^1.13.7, prettier@^1.7.0: - version "1.13.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" +prettier@^1.14.2, prettier@^1.7.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" pretty-error@^2.0.2: version "2.1.1" @@ -6730,9 +6684,9 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -pretty-format@^23.0.1, pretty-format@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" +pretty-format@^23.0.1, pretty-format@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -6784,10 +6738,10 @@ promise@^7.1.1: asap "~2.0.3" prompts@^0.1.9: - version "0.1.12" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.12.tgz#39dc42de7d2f0ec3e2af76bf40713fcb8726090d" + version "0.1.14" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" dependencies: - kleur "^1.0.0" + kleur "^2.0.1" sisteransi "^0.1.1" prop-types@^15.5.0, prop-types@^15.5.4, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: @@ -6798,11 +6752,11 @@ prop-types@^15.5.0, prop-types@^15.5.4, prop-types@^15.6.0, prop-types@^15.6.1, object-assign "^4.1.1" proxy-addr@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" dependencies: forwarded "~0.1.2" - ipaddr.js "1.6.0" + ipaddr.js "1.8.0" proxy-from-env@^1.0.0: version "1.0.0" @@ -6817,8 +6771,8 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" psl@^1.1.24: - version "1.1.28" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" public-encrypt@^4.0.0: version "4.0.2" @@ -6864,9 +6818,9 @@ punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" -puppeteer@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.6.0.tgz#b6b6bd6a063a0b7591258613ec89a135f2cf8f2e" +puppeteer@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.7.0.tgz#edcba2300a50847202c0f19fd15e7a96171ff3bd" dependencies: debug "^3.1.0" extract-zip "^1.6.6" @@ -6885,11 +6839,7 @@ qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -qs@~6.5.1: +qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -6931,8 +6881,8 @@ randexp@0.4.6: ret "~0.1.10" randomatic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" + version "3.1.0" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -6973,24 +6923,24 @@ rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^16.4.1: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6" +react-dom@^16.4.2: + version "16.4.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.2.tgz#4afed569689f2c561d2b8da0b819669c38a0bda4" dependencies: fbjs "^0.8.16" loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.0" -react-dropdown@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.5.0.tgz#3a08f0dd574b64d8eddde60ce51e45b72edc81c3" +react-dropdown@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.6.2.tgz#13ace229f1749f942cd0ec7eb221cb1a22788db7" dependencies: classnames "^2.2.3" -react-hot-loader@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.3.tgz#37409a3341c7787563d0972007ba02521f82f5d5" +react-hot-loader@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.5.tgz#d8659839d8072d4b78938a776f29f5f1d2a40170" dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -6999,9 +6949,9 @@ react-hot-loader@^4.3.3: react-lifecycles-compat "^3.0.4" shallowequal "^1.0.2" -react-is@^16.3.1, react-is@^16.4.1: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.1.tgz#d624c4650d2c65dbd52c72622bbf389435d9776e" +react-is@^16.3.1, react-is@^16.4.2: + version "16.4.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.2.tgz#84891b56c2b6d9efdee577cc83501dfc5ecead88" react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" @@ -7024,17 +6974,17 @@ react-tabs@^2.0.0: prop-types "^15.5.0" react-test-renderer@^16.0.0-0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.1.tgz#f2fb30c2c7b517db6e5b10ed20bb6b0a7ccd8d70" + version "16.4.2" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.2.tgz#4e03eca9359bb3210d4373f7547d1364218ef74e" dependencies: fbjs "^0.8.16" object-assign "^4.1.1" prop-types "^15.6.0" - react-is "^16.4.1" + react-is "^16.4.2" -react@^16.4.1: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32" +react@^16.4.2: + version "16.4.2" + resolved "https://registry.yarnpkg.com/react/-/react-16.4.2.tgz#2cd90154e3a9d9dd8da2991149fdca3c260e129f" dependencies: fbjs "^0.8.16" loose-envify "^1.1.0" @@ -7275,7 +7225,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2.87.0, request@^2.83.0, request@^2.85.0: +request@2.87.0: version "2.87.0" resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" dependencies: @@ -7300,32 +7250,30 @@ request@2.87.0, request@^2.83.0, request@^2.85.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -"request@>=2.9.0 <2.82.0": - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" +request@^2.85.0, request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" + aws-sign2 "~0.7.0" + aws4 "^1.8.0" caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" + combined-stream "~1.0.6" + extend "~3.0.2" forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" tunnel-agent "^0.6.0" - uuid "^3.0.0" + uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" @@ -7474,7 +7422,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -7498,8 +7446,8 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" schema-utils@^0.4.4, schema-utils@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" @@ -7678,8 +7626,8 @@ should-util@^1.0.0: resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063" should@^13.2.1: - version "13.2.1" - resolved "https://registry.yarnpkg.com/should/-/should-13.2.1.tgz#84e6ebfbb145c79e0ae42307b25b3f62dcaf574e" + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" dependencies: should-equal "^2.0.0" should-format "^3.0.3" @@ -7725,9 +7673,9 @@ slide@~1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -slugify@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.0.tgz#787919259d28c825fbcae6da2e01c77a109793f6" +slugify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.1.tgz#f572127e8535329fbc6c1edb74ab856b61ad7de2" snapdragon-node@^2.0.1: version "2.1.1" @@ -7756,15 +7704,9 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sockjs-client@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" +sockjs-client@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" dependencies: debug "^2.6.6" eventsource "0.1.6" @@ -7784,13 +7726,12 @@ source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" -source-map-loader@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.3.tgz#d4b0c8cd47d54edce3e6bfa0f523f452b5b0e521" +source-map-loader@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" dependencies: async "^2.5.0" - loader-utils "~0.2.2" - source-map "~0.6.1" + loader-utils "^1.1.0" source-map-resolve@^0.5.0: version "0.5.2" @@ -7809,8 +7750,8 @@ source-map-support@^0.4.15: source-map "^0.5.6" source-map-support@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + version "0.5.8" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.8.tgz#04f5581713a8a65612d0175fbf3a01f80a162613" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7884,8 +7825,8 @@ spdx-satisfies@^4.0.0: spdx-ranges "^2.0.0" spdx@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/spdx/-/spdx-0.5.1.tgz#d36c275088b48d75a9046cd44a838ce4b5339998" + version "0.5.2" + resolved "https://registry.yarnpkg.com/spdx/-/spdx-0.5.2.tgz#76a428b9b97e7904ef83e62a4af0d06fdb50c265" dependencies: spdx-exceptions "^1.0.0" spdx-license-ids "^1.0.0" @@ -7991,8 +7932,8 @@ stream-browserify@^2.0.1: readable-stream "^2.0.2" stream-each@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -8047,10 +7988,6 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8091,22 +8028,21 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -style-loader@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" +style-loader@^0.22.1: + version "0.22.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.22.1.tgz#901ea28aac78fcc00c5075585ac07d7ef3f87a52" dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" -styled-components@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.3.3.tgz#09e702055ab11f7a8eab8229b1c0d0b855095686" +styled-components@^3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.4.5.tgz#6cbfde7c9189c868b9fd01fee40f5330dbd0cc8d" dependencies: buffer "^5.0.3" css-to-react-native "^2.0.3" fbjs "^0.8.16" hoist-non-react-statics "^2.5.0" - is-plain-object "^2.0.1" prop-types "^15.5.4" react-is "^16.3.1" stylis "^3.5.0" @@ -8223,8 +8159,8 @@ tar@^2.0.0: inherits "2" tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -8350,14 +8286,14 @@ toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" dependencies: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: @@ -8389,9 +8325,9 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -ts-jest@^23.0.0: - version "23.0.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.0.0.tgz#3216310fb51e40789c6e4aa20bfe80198d250e9b" +ts-jest@23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.0.1.tgz#c90e747b2787d3394319cde77c2748a87aaf2f48" dependencies: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.0.0" @@ -8402,9 +8338,9 @@ ts-jest@^23.0.0: pkg-dir "^3.0.0" yargs "^12.0.1" -ts-loader@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-4.4.2.tgz#778d4464b24436873c78f7f9e914d88194c2a248" +ts-loader@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-4.5.0.tgz#a1ce70b2dc799941fb2197605f0d67874097859b" dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0" @@ -8412,9 +8348,9 @@ ts-loader@4.4.2: micromatch "^3.1.4" semver "^5.0.1" -ts-node@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.0.tgz#a94a13c75e5e1aa6b82814b84c68deb339ba7bff" +ts-node@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" dependencies: arrify "^1.0.0" buffer-from "^1.1.0" @@ -8435,9 +8371,9 @@ tslint-react@^3.4.0: dependencies: tsutils "^2.13.1" -tslint@^5.7.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.10.0.tgz#11e26bccb88afa02dd0d9956cae3d4540b5f54c3" +tslint@^5.11.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" @@ -8450,11 +8386,11 @@ tslint@^5.7.0: resolve "^1.3.2" semver "^5.3.0" tslib "^1.8.0" - tsutils "^2.12.1" + tsutils "^2.27.2" -tsutils@^2.12.1, tsutils@^2.13.1: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" +tsutils@^2.13.1, tsutils@^2.27.2: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" dependencies: tslib "^1.8.1" @@ -8500,9 +8436,9 @@ typescript@^2.5.1: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" -typescript@^3.0.0-dev.20180712: - version "3.0.0-dev.20180712" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.0-dev.20180712.tgz#ffdadf6a5a108c44d5325e83e2afbd088f2a5f84" +typescript@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb" ua-parser-js@^0.7.18: version "0.7.18" @@ -8516,8 +8452,8 @@ uglify-es@^3.3.4: source-map "~0.6.1" uglify-js@3.4.x: - version "3.4.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.4.tgz#92e79532a3aeffd4b6c65755bdba8d5bad98d607" + version "3.4.7" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.7.tgz#4df6b92e54789aa921a254cb1e33704d6ec12b89" dependencies: commander "~2.16.0" source-map "~0.6.1" @@ -8536,8 +8472,8 @@ uglify-to-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" uglifyjs-webpack-plugin@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00" + version "1.3.0" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -8610,9 +8546,9 @@ url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" -url-parse@^1.1.8, url-parse@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.1.tgz#4dec9dad3dc8585f862fed461d2e19bbf623df30" +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" dependencies: querystringify "^2.0.0" requires-port "^1.0.0" @@ -8671,17 +8607,17 @@ uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" v8-compile-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" + version "2.0.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -8758,9 +8694,9 @@ webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-cli@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9" +webpack-cli@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" @@ -8772,7 +8708,7 @@ webpack-cli@^3.0.8: loader-utils "^1.1.0" supports-color "^5.4.0" v8-compile-cache "^2.0.0" - yargs "^11.1.0" + yargs "^12.0.1" webpack-dev-middleware@3.1.3: version "3.1.3" @@ -8786,9 +8722,9 @@ webpack-dev-middleware@3.1.3: url-join "^4.0.0" webpack-log "^1.0.1" -webpack-dev-server@^3.1.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4" +webpack-dev-server@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401" dependencies: ansi-html "0.0.7" array-includes "^3.0.3" @@ -8811,7 +8747,7 @@ webpack-dev-server@^3.1.1: selfsigned "^1.9.1" serve-index "^1.7.2" sockjs "0.3.19" - sockjs-client "1.1.4" + sockjs-client "1.1.5" spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^5.1.0" @@ -8839,9 +8775,39 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.0.0, webpack@^4.16.1: - version "4.16.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.1.tgz#2c4b89ea648125c3e67bcca6adf49ce2c14b2d31" +webpack@^4.0.0: + version "4.16.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.5.tgz#29fb39462823d7eb8aefcab8b45f7f241db0d092" + dependencies: + "@webassemblyjs/ast" "1.5.13" + "@webassemblyjs/helper-module-context" "1.5.13" + "@webassemblyjs/wasm-edit" "1.5.13" + "@webassemblyjs/wasm-opt" "1.5.13" + "@webassemblyjs/wasm-parser" "1.5.13" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.0.1" + +webpack@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.1.tgz#0f026e3d823f3fc604f811ed3ea8f0d9b267fb1e" dependencies: "@webassemblyjs/ast" "1.5.13" "@webassemblyjs/helper-module-context" "1.5.13" @@ -8881,10 +8847,10 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" + version "1.0.4" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" dependencies: - iconv-lite "0.4.19" + iconv-lite "0.4.23" whatwg-fetch@>=0.10.0: version "2.0.4" @@ -8983,14 +8949,7 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - -ws@^5.1.1: +ws@^5.1.1, ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" dependencies: @@ -9064,7 +9023,7 @@ yargs@11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^11.0.0, yargs@^11.1.0: +yargs@^11.0.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" dependencies: