From eae11682b8ae77cbff395564f561d13117581261 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Thu, 16 Aug 2018 09:56:47 +0300 Subject: [PATCH 01/19] chore: sections/markdown refactor --- src/common-elements/panels.ts | 32 +++++- src/common-elements/perfect-scrollbar.tsx | 37 ++++++- src/components/ApiInfo/ApiDescription.tsx | 22 ---- src/components/ApiInfo/ApiInfo.tsx | 77 +++++++------- src/components/ApiInfo/index.ts | 1 - src/components/ContentItems/ContentItems.tsx | 84 +++++++++------ src/components/Markdown/AdvancedMarkdown.tsx | 38 +++++++ src/components/Markdown/Markdown.tsx | 100 +++--------------- src/components/Markdown/SanitizedMdBlock.tsx | 30 ++++++ ...styled.elements.ts => styled.elements.tsx} | 0 src/components/Operation/Operation.tsx | 12 +-- src/components/Redoc/Redoc.tsx | 3 +- src/components/SearchBox/SearchBox.tsx | 37 ++++--- src/components/SearchBox/styled.elements.tsx | 1 - .../SecurityRequirement.tsx | 35 +++--- .../SecuritySchemes/SecuritySchemes.tsx | 18 ++-- src/components/SideMenu/SideMenu.tsx | 42 +++----- src/components/SideMenu/styled.elements.ts | 10 +- src/components/index.ts | 1 - src/index.ts | 2 +- 20 files changed, 306 insertions(+), 276 deletions(-) delete mode 100644 src/components/ApiInfo/ApiDescription.tsx create mode 100644 src/components/Markdown/AdvancedMarkdown.tsx create mode 100644 src/components/Markdown/SanitizedMdBlock.tsx rename src/components/Markdown/{styled.elements.ts => styled.elements.tsx} (100%) diff --git a/src/common-elements/panels.ts b/src/common-elements/panels.ts index ffe5202e..37cfcb0d 100644 --- a/src/common-elements/panels.ts +++ b/src/common-elements/panels.ts @@ -1,19 +1,44 @@ -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%; @@ -27,6 +52,7 @@ export const DarkRightPanel = RightPanel.extend` 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/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 26aaa8c3..80d913a3 100644 --- a/src/components/ApiInfo/ApiInfo.tsx +++ b/src/components/ApiInfo/ApiInfo.tsx @@ -3,8 +3,8 @@ import * as React from 'react'; import { AppStore } from '../../services/AppStore'; -import { MiddlePanel, Row } from '../../common-elements/'; - +import { MiddlePanel, Row, Section } from '../../common-elements/'; +import { Markdown } from '../Markdown/Markdown'; import { StyledMarkdownBlock } from '../Markdown/styled.elements'; import { ApiHeader, @@ -70,43 +70,46 @@ 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 && (

- {externalDocs.description || externalDocs.url} + Download OpenAPI specification: + + Download +

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

+ {externalDocs.description || externalDocs.url} +

+ )) || + null} +
+ + + +
); } } 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/ContentItems/ContentItems.tsx b/src/components/ContentItems/ContentItems.tsx index 6deba5c0..f7441990 100644 --- a/src/components/ContentItems/ContentItems.tsx +++ b/src/components/ContentItems/ContentItems.tsx @@ -1,10 +1,9 @@ import { observer } from 'mobx-react'; import * as React from 'react'; -import { SECTION_ATTR } from '../../services/MenuStore'; -import { Markdown } from '../Markdown/Markdown'; +import { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown'; -import { H1, H2, MiddlePanel, Row, ShareLink } from '../../common-elements'; +import { H1, H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements'; import { MDXComponentMeta } from '../../services/MarkdownRenderer'; import { ContentItemModel } from '../../services/MenuBuilder'; import { GroupModel, OperationModel } from '../../services/models'; @@ -12,20 +11,22 @@ import { Operation } from '../Operation/Operation'; import { SecurityDefs } from '../SecuritySchemes/SecuritySchemes'; import { StoreConsumer } from '../StoreBuilder'; +const DEFAULT_ALLOWED_COMPONENTS = { + 'security-definitions': { + component: SecurityDefs, + propsSelector: _store => ({ + securitySchemes: _store!.spec.securitySchemes, + }), + }, +}; + @observer export class ContentItems extends React.Component<{ items: ContentItemModel[]; allowedMdComponents?: Dict; }> { static defaultProps = { - allowedMdComponents: { - 'security-definitions': { - component: SecurityDefs, - propsSelector: _store => ({ - securitySchemes: _store!.spec.securitySchemes, - }), - }, - }, + allowedMdComponents: DEFAULT_ALLOWED_COMPONENTS, }; render() { @@ -34,14 +35,18 @@ export class ContentItems extends React.Component<{ return null; } return items.map(item => ( - + )); } } export interface ContentItemProps { item: ContentItemModel; - allowedMdComponents?: Dict; + allowedMdComponents: Dict; } @observer @@ -67,15 +72,21 @@ 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() { @@ -83,23 +94,26 @@ export class SectionItem extends React.Component { const components = this.props.allowedMdComponents; const Header = level === 2 ? H2 : H1; return ( - - -
- - {name} -
- {components ? ( - - {store => ( - - )} - - ) : ( - + <> + + +
+ + {name} +
+
+
+ + {store => ( + )} -
-
+ + ); } } diff --git a/src/components/Markdown/AdvancedMarkdown.tsx b/src/components/Markdown/AdvancedMarkdown.tsx new file mode 100644 index 00000000..5b4a1f90 --- /dev/null +++ b/src/components/Markdown/AdvancedMarkdown.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; + +import { AppStore, MarkdownRenderer, MDXComponentMeta } from '../../services'; +import { BaseMarkdownProps } from './Markdown'; +import { SanitizedMarkdownHTML } from './SanitizedMdBlock'; + +export interface AdvancedMarkdownProps extends BaseMarkdownProps { + store?: AppStore; + allowedComponents: Dict; + htmlWrap?: (part: JSX.Element) => JSX.Element; +} + +export class AdvancedMarkdown extends React.Component { + render() { + const { store, source, allowedComponents, htmlWrap = i => i } = this.props; + + if (!store) { + throw new Error('When using componentes in markdown, store prop must be provided'); + } + + const renderer = new MarkdownRenderer(); + const parts = renderer.renderMdWithComponents(source, allowedComponents); + + 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..30903ddf --- /dev/null +++ b/src/components/Markdown/SanitizedMdBlock.tsx @@ -0,0 +1,30 @@ +import * as DOMPurify from 'dompurify'; +import * as React from 'react'; + +import { OptionsContext } 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 100% rename from src/components/Markdown/styled.elements.ts rename to src/components/Markdown/styled.elements.tsx diff --git a/src/components/Operation/Operation.tsx b/src/components/Operation/Operation.tsx index 1f5cb108..2fa7f748 100644 --- a/src/components/Operation/Operation.tsx +++ b/src/components/Operation/Operation.tsx @@ -23,20 +23,10 @@ const OperationRow = Row.extend` 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 { diff --git a/src/components/Redoc/Redoc.tsx b/src/components/Redoc/Redoc.tsx index 023e5244..323cdbd4 100644 --- a/src/components/Redoc/Redoc.tsx +++ b/src/components/Redoc/Redoc.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import { ThemeProvider } from '../../styled-components'; 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'; @@ -57,7 +57,6 @@ export class Redoc extends React.Component { - 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..89f48ec5 100644 --- a/src/components/SearchBox/styled.elements.tsx +++ b/src/components/SearchBox/styled.elements.tsx @@ -58,7 +58,6 @@ export const SearchResultsBox = styled.div` margin-top: 10px; line-height: 1.4; font-size: 0.9em; - overflow: auto; ${MenuItemLabel} { padding-top: 6px; diff --git a/src/components/SecurityRequirement/SecurityRequirement.tsx b/src/components/SecurityRequirement/SecurityRequirement.tsx index 2e872543..cba33f36 100644 --- a/src/components/SecurityRequirement/SecurityRequirement.tsx +++ b/src/components/SecurityRequirement/SecurityRequirement.tsx @@ -82,20 +82,23 @@ export class SecurityRequirement extends React.PureComponent props.theme.schema.defaultDetailsWidth}; `; const AuthHeader = UnderlinedHeader.extend` display: inline-block; + margin: 0; `; -const Table = styled.table` +const Wrap = styled.div` width: 100%; - border-collapse: collapse; - font-size: inherit; + display: flex; + margin: 1em 0; `; export interface SecurityRequirementsProps { @@ -109,20 +112,14 @@ 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..6af18621 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,10 +66,10 @@ 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/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..e332a13c 100644 --- a/src/components/SideMenu/styled.elements.ts +++ b/src/components/SideMenu/styled.elements.ts @@ -164,9 +164,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 +175,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/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'; From 0cf7191144cacc53e9d7190139feb49c6a03862b Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Thu, 16 Aug 2018 12:36:51 +0300 Subject: [PATCH 02/19] chore: various small refactorings --- src/components/ContentItems/ContentItems.tsx | 21 ++++++++------------ src/components/Markdown/AdvancedMarkdown.tsx | 8 ++++++-- src/components/Markdown/SanitizedMdBlock.tsx | 6 +++--- src/services/MenuStore.ts | 2 +- src/services/SpecStore.ts | 5 ++--- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/components/ContentItems/ContentItems.tsx b/src/components/ContentItems/ContentItems.tsx index f7441990..5d299ff9 100644 --- a/src/components/ContentItems/ContentItems.tsx +++ b/src/components/ContentItems/ContentItems.tsx @@ -9,7 +9,6 @@ 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'; const DEFAULT_ALLOWED_COMPONENTS = { 'security-definitions': { @@ -74,7 +73,7 @@ export class ContentItem extends React.Component { return ( <> -
+
{content}
{item.items && ( @@ -91,7 +90,8 @@ const middlePanelWrap = component => {component}; export class SectionItem extends React.Component { render() { const { name, description, level } = this.props.item as GroupModel; - const components = this.props.allowedMdComponents; + const { allowedMdComponents } = this.props; + const Header = level === 2 ? H2 : H1; return ( <> @@ -103,16 +103,11 @@ export class SectionItem extends React.Component { - - {store => ( - - )} - + ); } diff --git a/src/components/Markdown/AdvancedMarkdown.tsx b/src/components/Markdown/AdvancedMarkdown.tsx index 5b4a1f90..cba6232f 100644 --- a/src/components/Markdown/AdvancedMarkdown.tsx +++ b/src/components/Markdown/AdvancedMarkdown.tsx @@ -4,16 +4,20 @@ import { AppStore, MarkdownRenderer, MDXComponentMeta } from '../../services'; import { BaseMarkdownProps } from './Markdown'; import { SanitizedMarkdownHTML } from './SanitizedMdBlock'; +import { StoreConsumer } from '../StoreBuilder'; + export interface AdvancedMarkdownProps extends BaseMarkdownProps { - store?: AppStore; allowedComponents: Dict; htmlWrap?: (part: JSX.Element) => JSX.Element; } export class AdvancedMarkdown extends React.Component { render() { - const { store, source, allowedComponents, htmlWrap = i => i } = this.props; + return {store => this.renderWithStore(store)}; + } + renderWithStore(store?: AppStore) { + const { allowedComponents, source, htmlWrap = i => i } = this.props; if (!store) { throw new Error('When using componentes in markdown, store prop must be provided'); } diff --git a/src/components/Markdown/SanitizedMdBlock.tsx b/src/components/Markdown/SanitizedMdBlock.tsx index 30903ddf..9f0a8cb4 100644 --- a/src/components/Markdown/SanitizedMdBlock.tsx +++ b/src/components/Markdown/SanitizedMdBlock.tsx @@ -1,7 +1,7 @@ import * as DOMPurify from 'dompurify'; import * as React from 'react'; -import { OptionsContext } from '../OptionsProvider'; +import { OptionsConsumer } from '../OptionsProvider'; import { StylingMarkdownProps } from './Markdown'; import { StyledMarkdownBlock } from './styled.elements'; @@ -15,7 +15,7 @@ export function SanitizedMarkdownHTML( const Wrap = props.inline ? StyledMarkdownSpan : StyledMarkdownBlock; return ( - + {options => ( )} - + ); } diff --git a/src/services/MenuStore.ts b/src/services/MenuStore.ts index bee6c63e..e4fd4d43 100644 --- a/src/services/MenuStore.ts +++ b/src/services/MenuStore.ts @@ -74,7 +74,7 @@ export class MenuStore { * @param scroll scroll service instance used by this menu */ constructor(spec: SpecStore, public scroll: ScrollService) { - this.items = spec.operationGroups; + this.items = spec.contentItems; this.flatItems = flattenByProp(this.items || [], 'items'); this.flatItems.forEach((item, idx) => (item.absoluteIdx = idx)); 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); } } From 4ef4a971ceadac2c153fbed782d8615859325f3f Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Thu, 16 Aug 2018 12:37:39 +0300 Subject: [PATCH 03/19] chore: unify parsing components in md --- src/services/MarkdownRenderer.ts | 44 ++++++++++++-------------------- src/services/OpenAPIParser.ts | 12 ++------- 2 files changed, 18 insertions(+), 38 deletions(-) diff --git a/src/services/MarkdownRenderer.ts b/src/services/MarkdownRenderer.ts index acb3520f..bb83efb7 100644 --- a/src/services/MarkdownRenderer.ts +++ b/src/services/MarkdownRenderer.ts @@ -12,7 +12,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,6 +35,14 @@ 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; @@ -142,13 +150,17 @@ export class MarkdownRenderer { // Use marked ecosystem renderMdWithComponents( rawText: string, - components: Dict, + components?: Dict, ): Array { + 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/OpenAPIParser.ts b/src/services/OpenAPIParser.ts index 05cdf77d..654cfcdb 100644 --- a/src/services/OpenAPIParser.ts +++ b/src/services/OpenAPIParser.ts @@ -5,7 +5,7 @@ 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 { buildComponentComment, MarkdownRenderer } from './MarkdownRenderer'; import { RedocNormalizedOptions } from './RedocNormalizedOptions'; export type MergedOpenAPISchema = OpenAPISchema & { parentRefs?: string[] }; @@ -74,15 +74,7 @@ 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)) { + if (!MarkdownRenderer.containsComponent(description, 'security-definitions')) { const comment = buildComponentComment('security-definitions'); spec.info.description = appendToMdHeading(description, 'Authentication', comment); } From f903406c14cfc0410c32aefd1ca1fa9851e385ce Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 14:17:16 +0300 Subject: [PATCH 04/19] fix: use correct parent section for security definition --- src/services/MenuBuilder.ts | 23 ++++++++++++++++++---- src/services/MenuStore.ts | 5 ++++- src/services/OpenAPIParser.ts | 6 +++--- src/services/models/SecurityRequirement.ts | 4 ++-- src/services/models/SecuritySchemes.ts | 4 ++-- src/utils/openapi.ts | 6 +++++- 6 files changed, 35 insertions(+), 13 deletions(-) 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 e4fd4d43..3595e152 100644 --- a/src/services/MenuStore.ts +++ b/src/services/MenuStore.ts @@ -145,9 +145,12 @@ export class MenuStore { if (item) { this.activateAndScroll(item, false); } else { + if (hash.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}="${hash}"]`); } - return item !== undefined; }; /** diff --git a/src/services/OpenAPIParser.ts b/src/services/OpenAPIParser.ts index 654cfcdb..b4f67335 100644 --- a/src/services/OpenAPIParser.ts +++ b/src/services/OpenAPIParser.ts @@ -4,7 +4,7 @@ import { OpenAPIRef, OpenAPISchema, OpenAPISpec, Referenced } from '../types'; import { appendToMdHeading, IS_BROWSER } from '../utils/'; import { JsonPointer } from '../utils/JsonPointer'; -import { isNamedDefinition } from '../utils/openapi'; +import { isNamedDefinition, SECURITY_DEFINITIONS_COMPONENT_NAME } from '../utils/openapi'; import { buildComponentComment, MarkdownRenderer } from './MarkdownRenderer'; import { RedocNormalizedOptions } from './RedocNormalizedOptions'; @@ -74,8 +74,8 @@ export class OpenAPIParser { ) { // Automatically inject Authentication section with SecurityDefinitions component const description = spec.info.description || ''; - if (!MarkdownRenderer.containsComponent(description, 'security-definitions')) { - 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); } } 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/openapi.ts b/src/utils/openapi.ts index 080d010f..7cc6618b 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -275,4 +275,8 @@ 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; +} From d3d35189f500a8d708c1a838eb05e77c55d960ad Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 14:41:22 +0300 Subject: [PATCH 05/19] chore: refactor, move allowedMdComponents to options --- src/components/ContentItems/ContentItems.tsx | 36 ++------------- src/components/Markdown/AdvancedMarkdown.tsx | 20 ++++++--- src/components/Redoc/Redoc.tsx | 2 +- src/services/AppStore.ts | 16 ++++++- src/services/MarkdownRenderer.ts | 16 ++++--- src/services/RedocNormalizedOptions.ts | 10 ++++- .../__tests__/MarkdownRenderer.test.ts | 45 ++++++++++++++++++- 7 files changed, 93 insertions(+), 52 deletions(-) diff --git a/src/components/ContentItems/ContentItems.tsx b/src/components/ContentItems/ContentItems.tsx index 5d299ff9..aa8c4376 100644 --- a/src/components/ContentItems/ContentItems.tsx +++ b/src/components/ContentItems/ContentItems.tsx @@ -4,48 +4,25 @@ import * as React from 'react'; import { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown'; import { H1, H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements'; -import { MDXComponentMeta } from '../../services/MarkdownRenderer'; import { ContentItemModel } from '../../services/MenuBuilder'; import { GroupModel, OperationModel } from '../../services/models'; import { Operation } from '../Operation/Operation'; -import { SecurityDefs } from '../SecuritySchemes/SecuritySchemes'; - -const DEFAULT_ALLOWED_COMPONENTS = { - 'security-definitions': { - component: SecurityDefs, - propsSelector: _store => ({ - securitySchemes: _store!.spec.securitySchemes, - }), - }, -}; @observer export class ContentItems extends React.Component<{ items: ContentItemModel[]; - allowedMdComponents?: Dict; }> { - static defaultProps = { - allowedMdComponents: DEFAULT_ALLOWED_COMPONENTS, - }; - 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 @@ -76,9 +53,7 @@ export class ContentItem extends React.Component {
{content}
- {item.items && ( - - )} + {item.items && } ); } @@ -90,7 +65,6 @@ const middlePanelWrap = component => {component}; export class SectionItem extends React.Component { render() { const { name, description, level } = this.props.item as GroupModel; - const { allowedMdComponents } = this.props; const Header = level === 2 ? H2 : H1; return ( @@ -103,11 +77,7 @@ export class SectionItem extends React.Component { - + ); } diff --git a/src/components/Markdown/AdvancedMarkdown.tsx b/src/components/Markdown/AdvancedMarkdown.tsx index cba6232f..b75631d3 100644 --- a/src/components/Markdown/AdvancedMarkdown.tsx +++ b/src/components/Markdown/AdvancedMarkdown.tsx @@ -1,29 +1,35 @@ import * as React from 'react'; -import { AppStore, MarkdownRenderer, MDXComponentMeta } from '../../services'; +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 { - allowedComponents: Dict; htmlWrap?: (part: JSX.Element) => JSX.Element; } export class AdvancedMarkdown extends React.Component { render() { - return {store => this.renderWithStore(store)}; + return ( + + {options => ( + {store => this.renderWithOptionsAndStore(options, store)} + )} + + ); } - renderWithStore(store?: AppStore) { - const { allowedComponents, source, htmlWrap = i => i } = this.props; + 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(); - const parts = renderer.renderMdWithComponents(source, allowedComponents); + const renderer = new MarkdownRenderer(options); + const parts = renderer.renderMdWithComponents(source); if (!parts.length) { return null; diff --git a/src/components/Redoc/Redoc.tsx b/src/components/Redoc/Redoc.tsx index 323cdbd4..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 { 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'; diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index 1d3614f0..81419b15 100644 --- a/src/services/AppStore.ts +++ b/src/services/AppStore.ts @@ -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,7 +67,7 @@ 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) @@ -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/MarkdownRenderer.ts b/src/services/MarkdownRenderer.ts index bb83efb7..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(); @@ -49,7 +50,7 @@ export class MarkdownRenderer { 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, @@ -148,10 +149,8 @@ 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)]; } @@ -160,7 +159,7 @@ export class MarkdownRenderer { const names = '(?:' + Object.keys(components).join('|') + ')'; const anyCompRegexp = new RegExp( - COMPONENT_REGEXP.replace(/{component}/g, '(' + names + ')'), + COMPONENT_REGEXP.replace(/{component}/g, '(' + names + '.*?)'), 'gmi', ); let match = anyCompRegexp.exec(rawText); @@ -169,7 +168,10 @@ export class MarkdownRenderer { match = anyCompRegexp.exec(rawText); } - const splitCompRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, names), 'mi'); + const splitCompRegexp = new RegExp( + COMPONENT_REGEXP.replace(/{component}/g, names + '.*?'), + 'mi', + ); const htmlParts = rawText.split(splitCompRegexp); const res: any[] = []; for (let i = 0; i < htmlParts.length; i++) { 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/__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' }); + }); }); From cfddb3afe1221ff68dee046d176c59e032431ea4 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 14:50:58 +0300 Subject: [PATCH 06/19] chore: refactor HistoryService --- src/services/AppStore.ts | 8 ++-- src/services/HistoryService.ts | 37 +++++++++------ src/services/MenuStore.ts | 47 ++++++++++--------- .../__tests__/history.service.test.ts | 25 ++++++---- src/utils/dom.ts | 4 -- 5 files changed, 69 insertions(+), 52 deletions(-) diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index 81419b15..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'; @@ -71,10 +71,10 @@ export class AppStore { 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(); @@ -89,7 +89,7 @@ export class AppStore { } onDidMount() { - this.menu.updateOnHash(); + this.menu.updateOnHistory(); this.updateMarkOnMenu(this.menu.activeItemIdx); } diff --git a/src/services/HistoryService.ts b/src/services/HistoryService.ts index 2a9156f9..2ed1fbac 100644 --- a/src/services/HistoryService.ts +++ b/src/services/HistoryService.ts @@ -8,7 +8,7 @@ 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 +16,12 @@ 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) { + return '#' + id; } subscribe(cb): () => void { @@ -26,7 +30,7 @@ export class IntHistoryService { } emit = () => { - this._emiter.emit(EVENT, this.hash); + this._emiter.emit(EVENT, this.currentId); }; bind() { @@ -43,26 +47,31 @@ 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 || isSameHash(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)); } } -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/MenuStore.ts b/src/services/MenuStore.ts index 3595e152..c11fe56a 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,11 +42,11 @@ 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}"]`); } /** @@ -73,7 +73,7 @@ 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) { + constructor(spec: SpecStore, public scroll: ScrollService, public history: HistoryService) { this.items = spec.contentItems; this.flatItems = flattenByProp(this.items || [], 'items'); @@ -84,7 +84,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,24 +132,23 @@ 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 { - if (hash.startsWith(SECURITY_SCHEMES_SECTION_PREFIX)) { + 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}="${hash}"]`); + this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}="${id}"]`); } }; @@ -176,13 +175,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)) { @@ -190,7 +189,7 @@ export class MenuStore { } this.deactivate(this.activeItem); if (!item) { - HistoryService.update('', rewriteHistory); + this.history.replace('', rewriteHistory); return; } @@ -201,8 +200,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(); @@ -229,10 +228,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/__tests__/history.service.test.ts b/src/services/__tests__/history.service.test.ts index 26255faa..011378b3 100644 --- a/src/services/__tests__/history.service.test.ts +++ b/src/services/__tests__/history.service.test.ts @@ -1,25 +1,34 @@ -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'); + }); }); 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) { From 43a22f553143e949df79a856eb13ea3210affe01 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 14:54:28 +0300 Subject: [PATCH 07/19] chore: refactor links --- .../{linkify.ts => linkify.tsx} | 43 ++++++++++++++++++- src/components/ContentItems/ContentItems.tsx | 2 +- src/components/Operation/Operation.tsx | 2 +- .../SecurityRequirement.tsx | 4 +- .../SecuritySchemes/SecuritySchemes.tsx | 2 +- 5 files changed, 47 insertions(+), 6 deletions(-) rename src/common-elements/{linkify.ts => linkify.tsx} (60%) 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/components/ContentItems/ContentItems.tsx b/src/components/ContentItems/ContentItems.tsx index aa8c4376..8bfde5d9 100644 --- a/src/components/ContentItems/ContentItems.tsx +++ b/src/components/ContentItems/ContentItems.tsx @@ -72,7 +72,7 @@ export class SectionItem extends React.Component {
- + {name}
diff --git a/src/components/Operation/Operation.tsx b/src/components/Operation/Operation.tsx index 2fa7f748..19ff6841 100644 --- a/src/components/Operation/Operation.tsx +++ b/src/components/Operation/Operation.tsx @@ -45,7 +45,7 @@ export class Operation extends React.Component {

- + {summary} {deprecated && Deprecated }

{options.pathInMiddlePanel && } diff --git a/src/components/SecurityRequirement/SecurityRequirement.tsx b/src/components/SecurityRequirement/SecurityRequirement.tsx index cba33f36..86ccb6bd 100644 --- a/src/components/SecurityRequirement/SecurityRequirement.tsx +++ b/src/components/SecurityRequirement/SecurityRequirement.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import styled from '../../styled-components'; -import { UnderlinedHeader } from '../../common-elements/headers'; +import { Link, UnderlinedHeader } from '../../common-elements/'; import { SecurityRequirementModel } from '../../services/models/SecurityRequirement'; import { linksCss } from '../Markdown/styled.elements'; @@ -70,7 +70,7 @@ export class SecurityRequirement extends React.PureComponent { return ( - {scheme.id} + {scheme.id} {scheme.scopes.length > 0 && ' ('} {scheme.scopes.map(scope => {scope})} {scheme.scopes.length > 0 && ') '} diff --git a/src/components/SecuritySchemes/SecuritySchemes.tsx b/src/components/SecuritySchemes/SecuritySchemes.tsx index 6af18621..08ca01fd 100644 --- a/src/components/SecuritySchemes/SecuritySchemes.tsx +++ b/src/components/SecuritySchemes/SecuritySchemes.tsx @@ -71,7 +71,7 @@ export class SecurityDefs extends React.PureComponent {

- + {scheme.id}

From b9c1b49810ba87935d0d2f0d798e6ee37c52bfab Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 15:01:18 +0300 Subject: [PATCH 08/19] chore: minor fixes after refactor --- src/services/HistoryService.ts | 10 +++++----- src/services/__tests__/history.service.test.ts | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/services/HistoryService.ts b/src/services/HistoryService.ts index 2ed1fbac..da48f946 100644 --- a/src/services/HistoryService.ts +++ b/src/services/HistoryService.ts @@ -4,10 +4,6 @@ import { IS_BROWSER } from '../utils/'; const EVENT = 'hashchange'; -function isSameHash(a: string, b: string): boolean { - return a === b || '#' + a === b || a === '#' + b; -} - export class HistoryService { private _emiter; @@ -21,6 +17,9 @@ export class HistoryService { } linkForId(id: string) { + if (!id) { + return ''; + } return '#' + id; } @@ -52,7 +51,7 @@ export class HistoryService { return; } - if (id == null || isSameHash(id, this.currentId)) { + if (id == null || id === this.currentId) { return; } if (rewriteHistory) { @@ -65,6 +64,7 @@ export class HistoryService { return; } window.history.pushState(null, '', window.location.href.split('#')[0] + this.linkForId(id)); + this.emit(); } } diff --git a/src/services/__tests__/history.service.test.ts b/src/services/__tests__/history.service.test.ts index 011378b3..753340d0 100644 --- a/src/services/__tests__/history.service.test.ts +++ b/src/services/__tests__/history.service.test.ts @@ -31,4 +31,8 @@ describe('History service', () => { 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(''); + }); }); From 3ccc9c4ea636e307a0b42bdb7f7a6c26ab2ae7c8 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 16:57:32 +0300 Subject: [PATCH 09/19] chore: update to typescript@3 --- package.json | 80 +- src/components/RedocStandalone.tsx | 3 +- src/components/SearchBox/styled.elements.tsx | 2 +- src/components/SideMenu/styled.elements.ts | 16 +- yarn.lock | 1134 ++++++++---------- 5 files changed, 553 insertions(+), 682 deletions(-) diff --git a/package.json b/package.json index a98a92cf..08e6af95 100644 --- a/package.json +++ b/package.json @@ -58,24 +58,24 @@ "@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/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.10", "@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", @@ -85,37 +85,37 @@ "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.3", + "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-jest": "^23.1.3", "ts-loader": "4.4.2", - "ts-node": "^7.0.0", - "tslint": "^5.7.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.16.5", + "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", + "marked": "0.5.0", "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", "prismjs": "^1.15.0", "prop-types": "^15.6.2", - "react-dropdown": "^1.3.0", - "react-hot-loader": "^4.3.3", + "react-dropdown": "^1.6.1", + "react-hot-loader": "^4.3.4", "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.2", "tslib": "^1.9.3" }, "resolutions": { 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/SearchBox/styled.elements.tsx b/src/components/SearchBox/styled.elements.tsx index 89f48ec5..26d87337 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}) => ( (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}; diff --git a/yarn.lock b/yarn.lock index 72e8af44..f40922a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,10 +9,10 @@ "@babel/highlight" "7.0.0-beta.47" "@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" @@ -45,10 +45,10 @@ 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" @@ -90,9 +90,9 @@ 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.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" @@ -148,12 +148,12 @@ lodash "^4.17.5" 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.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" "@cypress/listr-verbose-renderer@0.4.1": @@ -216,26 +216,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 +249,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" @@ -276,20 +276,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 +303,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 +349,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.10": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.4.10.tgz#2ecf12589142bc531549140612815b7d8b076358" 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 +499,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 +509,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 +546,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 +568,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" @@ -687,10 +687,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - array-find-index@^1.0.1, array-find-index@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -714,14 +710,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -740,6 +728,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 +753,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 +784,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 +808,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 +1007,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" @@ -1370,7 +1360,7 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^23.0.0, babel-preset-jest@^23.2.0: +babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: @@ -1400,7 +1390,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1555,12 +1545,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 +1682,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 +1702,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 +1830,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" @@ -1915,7 +1899,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^1.6.0, chokidar@^1.7.0: +chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -1963,9 +1947,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" @@ -2056,6 +2040,10 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +closest-file-data@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2085,7 +2073,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 +2083,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" @@ -2398,22 +2390,6 @@ coveralls@^3.0.2: minimist "^1.2.0" request "^2.85.0" -cpx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2460,12 +2436,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 +2510,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 +2530,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 +2557,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 +2679,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 +2871,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 +2889,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 +2933,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 +2995,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 +3022,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.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.4.3.tgz#86c4a1219a967cddb8d0359f28e119a93302014b" 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 +3056,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 +3075,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 +3119,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 +3323,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 +3382,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 +3395,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" @@ -3600,10 +3573,6 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -3646,8 +3615,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 +3630,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 +3638,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 +3654,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 +3746,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 +3797,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" @@ -3908,12 +3869,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -3932,8 +3887,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 +3976,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 +3987,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 +4047,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 +4067,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 +4079,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 +4200,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 +4223,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 +4330,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 +4357,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.0, 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 +4371,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 +4411,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 +4422,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 +4739,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 +4760,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 +4786,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.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 +4820,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 +4846,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 +4908,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 +4952,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 +4971,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 +4999,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,12 +5022,12 @@ 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" @@ -5117,34 +5049,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 +5101,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 +5126,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" @@ -5228,10 +5154,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -5273,9 +5195,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 +5217,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 +5232,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 +5318,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 +5418,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 +5499,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" @@ -5627,9 +5545,9 @@ mark.js@^8.11.1: version "8.11.1" resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" -marked@0.3.18: - version "0.3.18" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.18.tgz#3ef058cd926101849b92a7a7c15db18c7fc76b2f" +marked@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.0.tgz#9e590bad31584a48ff405b33ab1c0dd25172288e" math-random@^1.0.1: version "1.0.1" @@ -5753,19 +5671,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" @@ -5814,7 +5728,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -5823,8 +5737,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 +5783,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 +5798,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 +5857,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 +5879,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 +5910,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 +5928,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 +6036,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 +6071,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 +6114,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 +6134,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 +6142,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 +6152,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 +6230,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 +6275,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 +6456,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 +6495,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" @@ -6604,12 +6523,6 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - dependencies: - find-up "^3.0.0" - pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" @@ -6623,8 +6536,8 @@ polished@^1.9.3: resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.3.tgz#d61b8a0c4624efe31e2583ff24a358932b6b75e1" 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 +6632,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 +6643,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 +6697,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 +6711,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 +6730,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 +6777,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 +6798,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 +6840,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 +6882,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.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.6.1.tgz#cc0c8de211bffc5ecc73051b9d426ad487fc5669" 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.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.4.tgz#4f9bdd55bb20d77a6ae8931fa1c187e5f0ce6279" dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -6999,9 +6908,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 +6933,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 +7184,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 +7209,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" @@ -7372,7 +7279,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -7474,7 +7381,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 +7405,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" @@ -7628,15 +7535,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shelljs@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" @@ -7678,8 +7576,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 +7623,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 +7654,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 +7676,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 +7700,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 +7775,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 +7882,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 +7938,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 +7978,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.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.4.2.tgz#8f518419932327e47fe9144824e3184b3e2da95d" 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" @@ -8121,12 +8007,6 @@ stylis@^3.0.0, stylis@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" - supports-color@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" @@ -8223,8 +8103,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 +8230,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,18 +8269,13 @@ 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.1.3: + version "23.1.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.3.tgz#33e3187d3ef0d42adada6347acf2c3539ac56107" dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.0.0" - cpx "^1.5.0" + closest-file-data "^0.1.4" fs-extra "6.0.1" - jest-config "^23.0.0" lodash "^4.17.10" - pkg-dir "^3.0.0" - yargs "^12.0.1" ts-loader@4.4.2: version "4.4.2" @@ -8412,9 +8287,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 +8310,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 +8325,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 +8375,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 +8391,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 +8411,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 +8485,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 +8546,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 +8633,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 +8647,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 +8661,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 +8686,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 +8714,9 @@ 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, webpack@^4.16.5: + 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" @@ -8881,10 +8756,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 +8858,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 +8932,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: From 0292b77d5132cc0ae379ab87ae7bfa630c00c411 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Fri, 17 Aug 2018 17:26:20 +0300 Subject: [PATCH 10/19] chore: downgrade marked --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 08e6af95..616b59c3 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "json-schema-ref-parser": "^5.1.2", "lunr": "^2.3.2", "mark.js": "^8.11.1", - "marked": "0.5.0", + "marked": "0.3.18", "memoize-one": "^4.0.0", "mobx-react": "^5.2.5", "openapi-sampler": "1.0.0-beta.14", diff --git a/yarn.lock b/yarn.lock index f40922a0..65acd92f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5545,9 +5545,9 @@ mark.js@^8.11.1: version "8.11.1" resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" -marked@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.0.tgz#9e590bad31584a48ff405b33ab1c0dd25172288e" +marked@0.3.18: + version "0.3.18" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.18.tgz#3ef058cd926101849b92a7a7c15db18c7fc76b2f" math-random@^1.0.1: version "1.0.1" From 93e844c3d0fa79bfb283fe2485118d6ee067604b Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sat, 18 Aug 2018 16:21:32 +0300 Subject: [PATCH 11/19] chore: update babel to latest rc --- demo/webpack.config.ts | 6 +- package.json | 10 +-- webpack.config.ts | 6 +- yarn.lock | 180 ++++++++++++++++++----------------------- 4 files changed, 93 insertions(+), 109 deletions(-) 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/package.json b/package.json index 616b59c3..4a988d1e 100644 --- a/package.json +++ b/package.json @@ -51,10 +51,10 @@ "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.1", + "@babel/plugin-syntax-decorators": "7.0.0-rc.1", + "@babel/plugin-syntax-jsx": "7.0.0-rc.1", + "@babel/plugin-syntax-typescript": "7.0.0-rc.1", "@cypress/webpack-preprocessor": "2.0.1", "@types/chai": "4.1.4", "@types/dompurify": "^0.0.31", @@ -108,7 +108,7 @@ "style-loader": "^0.22.1", "swagger2openapi": "^3.2.8", "ts-jest": "^23.1.3", - "ts-loader": "4.4.2", + "ts-loader": "4.5.0", "ts-node": "^7.0.1", "tslint": "^5.11.0", "tslint-react": "^3.4.0", 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 65acd92f..e4c9d84c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,45 +2,38 @@ # 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" - dependencies: - "@babel/highlight" "7.0.0-beta.47" - -"@babel/code-frame@^7.0.0-beta.35", "@babel/code-frame@^7.0.0-beta.39": +"@babel/code-frame@7.0.0-rc.1", "@babel/code-frame@^7.0.0-beta.35", "@babel/code-frame@^7.0.0-beta.39": 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-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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.1.tgz#53c84fd562e13325f123d5951184eec97b958204" 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.1" + "@babel/generator" "7.0.0-rc.1" + "@babel/helpers" "7.0.0-rc.1" + "@babel/parser" "7.0.0-rc.1" + "@babel/template" "7.0.0-rc.1" + "@babel/traverse" "7.0.0-rc.1" + "@babel/types" "7.0.0-rc.1" 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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.1.tgz#739c87d70b31aeed802bd6bc9fd51480065c45e8" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.1" jsesc "^2.5.1" - lodash "^4.17.5" + lodash "^4.17.10" source-map "^0.5.0" trim-right "^1.0.1" @@ -50,45 +43,37 @@ dependencies: "@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.1.tgz#20b2cc836a53c669f297c8d309fc553385c5cdde" 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.1" + "@babel/template" "7.0.0-rc.1" + "@babel/types" "7.0.0-rc.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.1.tgz#60185957f72ed73766ce74c836ac574921743c46" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-rc.1.tgz#3e277eae59818e7d4caf4174f58a7a00d441336e" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.1.tgz#b00323834343fd0210f1f46c7a53521ad53efa5e" dependencies: - "@babel/types" "7.0.0-beta.47" + "@babel/types" "7.0.0-rc.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.1.tgz#e59092cdf4b28026b3fc9d272e27e0ef152b4bee" dependencies: - "@babel/template" "7.0.0-beta.47" - "@babel/traverse" "7.0.0-beta.47" - "@babel/types" "7.0.0-beta.47" - -"@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" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + "@babel/template" "7.0.0-rc.1" + "@babel/traverse" "7.0.0-rc.1" + "@babel/types" "7.0.0-rc.1" "@babel/highlight@7.0.0-rc.1": version "7.0.0-rc.1" @@ -98,55 +83,50 @@ esutils "^2.0.2" js-tokens "^3.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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.1.tgz#d009a9bba8175d7b971e30cd03535b278c44082d" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-rc.1.tgz#f5b2c04547c1e780ffd5ed943757f810858870e2" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-rc.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-rc.1.tgz#f7d19fa482f6bf42225c4b3d8f14e825e3fa325a" dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.47" + "@babel/helper-plugin-utils" "7.0.0-rc.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-rc.1.tgz#f1e0afa67b62aa9659cf9995a8a46f0638faa05f" 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.1" -"@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.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.1.tgz#5f9c0a481c9f22ecdb84697b3c3a34eadeeca23c" 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.1" + "@babel/parser" "7.0.0-rc.1" + "@babel/types" "7.0.0-rc.1" + lodash "^4.17.10" + +"@babel/traverse@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.1.tgz#867b4b45ada2d51ae2d0076f1c1d5880f8557158" + dependencies: + "@babel/code-frame" "7.0.0-rc.1" + "@babel/generator" "7.0.0-rc.1" + "@babel/helper-function-name" "7.0.0-rc.1" + "@babel/helper-split-export-declaration" "7.0.0-rc.1" + "@babel/parser" "7.0.0-rc.1" + "@babel/types" "7.0.0-rc.1" debug "^3.1.0" globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.17.5" - -"@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" - dependencies: - esutils "^2.0.2" - lodash "^4.17.5" - to-fast-properties "^2.0.0" + lodash "^4.17.10" "@babel/types@7.0.0-rc.1": version "7.0.0-rc.1" @@ -1430,10 +1410,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" @@ -4357,7 +4333,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.4: +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: @@ -8277,9 +8253,9 @@ ts-jest@^23.1.3: fs-extra "6.0.1" lodash "^4.17.10" -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" From 528b8fbebc8383e157baa695f84dd20f9cefc338 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sat, 18 Aug 2018 16:23:33 +0300 Subject: [PATCH 12/19] chore: prettier all --- src/components/Fields/FieldDetails.tsx | 9 ++++++++- src/components/PayloadSamples/MediaTypeSamples.tsx | 4 +++- src/components/SearchBox/styled.elements.tsx | 2 +- .../SecurityRequirement/SecurityRequirement.tsx | 8 ++++++-- src/services/MenuStore.ts | 6 ++++-- src/services/models/Field.ts | 3 ++- src/services/models/Group.model.ts | 6 ++++-- src/services/models/MediaContent.ts | 3 ++- src/services/models/Operation.ts | 9 ++++++--- src/services/models/Response.ts | 3 ++- src/services/models/Schema.ts | 3 ++- 11 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/components/Fields/FieldDetails.tsx b/src/components/Fields/FieldDetails.tsx index 87aebdac..0d063226 100644 --- a/src/components/Fields/FieldDetails.tsx +++ b/src/components/Fields/FieldDetails.tsx @@ -28,7 +28,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/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/SearchBox/styled.elements.tsx b/src/components/SearchBox/styled.elements.tsx index 26d87337..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: {className?: string}) => ( +export const SearchIcon = styled((props: { className?: string }) => ( {scheme.id} {scheme.scopes.length > 0 && ' ('} - {scheme.scopes.map(scope => {scope})} + {scheme.scopes.map(scope => ( + {scope} + ))} {scheme.scopes.length > 0 && ') '} ); @@ -117,7 +119,9 @@ export class SecurityRequirements extends React.PureComponentAuthorizations: - {securities.map((security, idx) => )} + {securities.map((security, idx) => ( + + ))} ); diff --git a/src/services/MenuStore.ts b/src/services/MenuStore.ts index c11fe56a..f775070b 100644 --- a/src/services/MenuStore.ts +++ b/src/services/MenuStore.ts @@ -52,12 +52,14 @@ export class MenuStore { /** * 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[]; 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/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 1b9abfd0..a53ad183 100644 --- a/src/services/models/Schema.ts +++ b/src/services/models/Schema.ts @@ -48,7 +48,8 @@ export class SchemaModel { oneOf?: SchemaModel[]; oneOfType: string; discriminatorProp: string; - @observable activeOneOf: number = 0; + @observable + activeOneOf: number = 0; rawSchema: OpenAPISchema; schema: MergedOpenAPISchema; From a87440113b1a212c33be272421488ead1276a946 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sat, 18 Aug 2018 16:31:26 +0300 Subject: [PATCH 13/19] chore: downgrade ts-jest due to broken coverage --- package.json | 4 +-- yarn.lock | 92 ++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 80 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 4a988d1e..a46a3df7 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "source-map-loader": "^0.2.4", "style-loader": "^0.22.1", "swagger2openapi": "^3.2.8", - "ts-jest": "^23.1.3", + "ts-jest": "23.0.1", "ts-loader": "4.5.0", "ts-node": "^7.0.1", "tslint": "^5.11.0", @@ -162,7 +162,7 @@ ], "jest": { "transform": { - "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" + "^.+\\.tsx?$": "ts-jest" }, "setupTestFrameworkScriptFile": "/src/setupTests.ts", "testPathIgnorePatterns": [ diff --git a/yarn.lock b/yarn.lock index e4c9d84c..9b6ea6f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -667,6 +667,10 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1, array-find-index@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -690,6 +694,14 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1340,7 +1352,7 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^23.2.0: +babel-preset-jest@^23.0.0, babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: @@ -1370,7 +1382,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1875,7 +1887,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^1.7.0: +chokidar@^1.6.0, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -2016,10 +2028,6 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -closest-file-data@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2366,6 +2374,22 @@ coveralls@^3.0.2: minimist "^1.2.0" request "^2.85.0" +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3549,6 +3573,10 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -3845,6 +3873,12 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -4762,7 +4796,7 @@ jest-cli@^23.5.0: which "^1.2.12" yargs "^11.0.0" -jest-config@^23.5.0: +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: @@ -5130,6 +5164,10 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -5704,7 +5742,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -6499,6 +6537,12 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + dependencies: + find-up "^3.0.0" + pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" @@ -7255,7 +7299,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -7511,6 +7555,15 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + shelljs@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" @@ -7983,6 +8036,12 @@ stylis@^3.0.0, stylis@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + supports-color@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" @@ -8245,13 +8304,18 @@ 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.1.3: - version "23.1.3" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.3.tgz#33e3187d3ef0d42adada6347acf2c3539ac56107" +ts-jest@23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.0.1.tgz#c90e747b2787d3394319cde77c2748a87aaf2f48" dependencies: - closest-file-data "^0.1.4" + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.0.0" + cpx "^1.5.0" fs-extra "6.0.1" + jest-config "^23.0.0" lodash "^4.17.10" + pkg-dir "^3.0.0" + yargs "^12.0.1" ts-loader@4.5.0: version "4.5.0" From 5d84bd46564ac176f4e680e88f96c567b75745bb Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 19 Aug 2018 16:50:15 +0300 Subject: [PATCH 14/19] fix: make http badges font-based instead of inline png --- src/components/SideMenu/MenuItem.tsx | 3 ++- src/components/SideMenu/styled.elements.ts | 22 +++++++++------------- src/utils/openapi.ts | 6 ++++++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/components/SideMenu/MenuItem.tsx b/src/components/SideMenu/MenuItem.tsx index 73e9a209..a1532a5b 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'; @@ -93,7 +94,7 @@ class OperationMenuItemContent extends React.Component - + {shortenHTTPVerb(item.httpVerb)} {item.name} {this.props.children} diff --git a/src/components/SideMenu/styled.elements.ts b/src/components/SideMenu/styled.elements.ts index 29cc19d0..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}; } `; diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index 7cc6618b..3d91ac12 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -280,3 +280,9 @@ 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); From fb212128f9fe0e63dfec7f73fa22321f66829837 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Wed, 22 Aug 2018 12:25:02 +0300 Subject: [PATCH 15/19] fix: fix crash on empty media object fixes #608 --- src/services/models/MediaType.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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( From 720e28284c6ee9878a9f8c36a29af6a3ae7a48ef Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Wed, 22 Aug 2018 12:27:13 +0300 Subject: [PATCH 16/19] fix: do not inherit title in allOf fixes #601 --- src/services/OpenAPIParser.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/OpenAPIParser.ts b/src/services/OpenAPIParser.ts index b4f67335..f841dd24 100644 --- a/src/services/OpenAPIParser.ts +++ b/src/services/OpenAPIParser.ts @@ -256,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); } } } From c8b7eed7f018f15e00a88ccd74f3f01b2afce855 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Wed, 22 Aug 2018 12:47:35 +0300 Subject: [PATCH 17/19] chore: add sql-syntax for prism.js --- src/utils/highlight.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/highlight.ts b/src/utils/highlight.ts index feae2a3b..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'; From 1ba8a4cf7b1511f3ced8aeb1433f9494d35ed005 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Wed, 22 Aug 2018 13:22:58 +0300 Subject: [PATCH 18/19] chore: remove class active from group items + fix e2e tests --- e2e/integration/menu.e2e.ts | 7 ++++--- src/components/SideMenu/MenuItem.tsx | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) 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/src/components/SideMenu/MenuItem.tsx b/src/components/SideMenu/MenuItem.tsx index a1532a5b..69282b0b 100644 --- a/src/components/SideMenu/MenuItem.tsx +++ b/src/components/SideMenu/MenuItem.tsx @@ -52,7 +52,7 @@ export class MenuItem extends React.Component { {item.type === 'operation' ? ( ) : ( - + {item.name} {this.props.children} From f958571c0adb91e54a33b133cb9609a493d253ea Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Wed, 22 Aug 2018 13:23:36 +0300 Subject: [PATCH 19/19] =?UTF-8?q?chore:=20Release=202.0.0-alpha.37=20?= =?UTF-8?q?=F0=9F=94=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cd894d9..3362dc22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + +# [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) diff --git a/package.json b/package.json index a46a3df7..416785e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redoc", - "version": "2.0.0-alpha.36", + "version": "2.0.0-alpha.37", "description": "ReDoc", "repository": { "type": "git",